引入
一張圖像顯示在顯示屏上的時候,它斑斕多彩,輪廓分明(可你放的明明是張灰度圖!),而當它被轉化到數字設備當中的時候,我們看到的就將會是下面的情形:
是的,所有的色彩最后都會被變為一個個數字,在0到255之間來回徘徊,在一個個矩陣中被圍困(突然詩意起來)。可以這樣說,矩陣就是圖像在數碼設備中的表現形式。而正是因為他們由這些數字組成,才給了我們機會去用數字的方法來支配他們。
對于一張圖片,我們往往不會對每一個地方都相同地感興趣,總有一些特殊東西才是我們的目標。將目標區域和不想要的背景區域區分開我們就可以對這些數字下手。下面我們就說道說道二值化的那些事兒~
二值化
說起二值化,我們可以先來看看二值圖像
二值圖像(Binary Image)是指圖像上的每一個像素只有兩種可能的取值或灰度等級狀態的圖像。通常來講就是我們常常看見的“非黑即白”的圖像,也就是說,圖像像素的灰度值無論在什么數據類型中都只有最大值和最小值兩種取值。這種圖像色彩類型少,可以進行高度的壓縮,利于節省儲存空間。
相應的,二值化就是把非二值圖像經過計算變成二值圖像。
在openCV4中有threshold()和adaptiveThreshold()可以來實現圖像的二值化。
那么下面就先來介紹前一種啦
輸入輸出的圖像以及閾值和最大值大家都應該和好理解,那么什么是二值化方法的標志參數呢?
下面的表中大致就是可能會用的的一些標志參數和它們的含義:
下圖是前五種方法做二值化之后的信號示意圖:
如同標志參數的作用介紹中說的,前五中標志參數都需要人為地設定一個閾值,之后才能進行二值化。人們進行二值化的目的往往是為了把目標物體和其他的東西分離開,形成圖像的分割,但是有的時候為了分別這兩者而設定的閾值往往不是那么簡單就可以分得出來的,或者說,在對原始圖像的灰度值分布不是那么了解的情況下是很難設定到自己想要的那種閾值的。
于是就有了下面的兩個標志參數可以用來獲取閾值:THRESH_OTSU(大津法)THRESH_TRIANGLE(三角形法)
問
那么什么是大津法呢
百度百科教我的:大津法也就是最大類間方差法是由日本學者大津(Nobuyuki Otsu)于1979年提出的,是一種自適合于雙峰情況的自動求取閾值的方法,簡稱OTSU。它是按圖像的灰度特性,將圖像分成背景和目標兩部分。背景和目標之間的類間方差越大,說明構成圖像的兩部分的差別越大,當部分目標錯分為背景或部分背景錯分為目標都會導致兩部分差別變小。因此,使類間方差最大的分割意味著錯分概率最小。
這是某一張圖像的灰度直方圖,我們可以看到它其實很明顯地呈現出了適合利用大津法求閾值的雙峰情況(灰度大都集中在某兩個分離的區域之間),對某一假設的灰度值閾值將圖像的灰度值分成背景和目標兩部分,計算兩組灰度值之間的類間方差,得到的方差值大致如圖中的紅色點所示。于是理所當然的,方差最高點所對應的灰度值正是我們能夠合理分開目標和背景的閾值。
但是由于這兩種方法往往是基于全局閾值,當圖像中有一部分過度曝光或者說有陰影遮擋時,用這樣的閾值選取方法就會顯得有點不太好。
比如說,當你晚上寫下一篇英語作文,想要拍照上傳給老師批改,而在上傳到某掃描王軟件時,往往就會發生這樣的事情:
于是我們就理所當然地想:有沒有可以讓這整張圖中的字母大多數都能看清的方法呢?
很高興,有的!
我們就要用到adaptiveThreshold(),它可以幫助我們得到局部自適應的閾值。(當然,先把圖像分割,再用全局函數也不失為一種方法,不過相對比來說還是直接用adaptiveThreshold()來得更加方便快捷。
adaptive_mean是均值法自適應計算blockSize×blockSize鄰域內的閾值,在這之后就可以進行二值化了。
因為是局部的閾值,所以就可以更加明確地在每一個地方都有比較好的區分,可以把大部分范圍內的內容都更好地分割開來。
編輯:jq
-
顯示屏
+關注
關注
28文章
4493瀏覽量
74389 -
二值圖像
+關注
關注
0文章
14瀏覽量
8738 -
OpenCV
+關注
關注
31文章
635瀏覽量
41373
原文標題:科普 | 簡單圖像處理:用用二值化吧!
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論