圖像二值化(python+opencv)

定義:圖像的二值化域庇,就是將圖像上的像素點(diǎn)的灰度值設(shè)置為0或255,也就是將整個(gè)圖像呈現(xiàn)出明顯的只有黑和白的視覺效果脚囊。

一幅圖像包括目標(biāo)物體台丛、背景還有噪聲耍缴,要想從多值的數(shù)字圖像中直接提取出目標(biāo)物體,常用的方法就是設(shè)定一個(gè)閾值T挽霉,用T將圖像的數(shù)據(jù)分成兩部分:大于T的像素群和小于T的像素群。這是研究灰度變換的最特殊的方法变汪,稱為圖像的二值化(Binarization)侠坎。

全局閾值:

Python-OpenCV中提供了閾值(threshold)函數(shù):cv2.threshold(src, threshold, maxValue, method)

src原圖:破折線為將被閾值化的值;虛線為閾值

cv2.THRESH_BINARY:大于閾值的像素點(diǎn)的灰度值設(shè)定為maxValue(如8位灰度值最大為255)裙盾,灰度值小于閾值的像素點(diǎn)的灰度值設(shè)定為0实胸。

cv2.THRESH_BINARY_INV :大于閾值的像素點(diǎn)的灰度值設(shè)定為0他嫡,而小于該閾值的設(shè)定為maxValue。

cv2.THRESH_TRUNC:像素點(diǎn)的灰度值小于閾值不改變庐完,大于閾值的灰度值的像素點(diǎn)就設(shè)定為該閾值钢属。

cv2.THRESH_TOZERO:像素點(diǎn)的灰度值小于該閾值的不進(jìn)行任何改變,而大于該閾值的部分门躯,其灰度值全部變?yōu)?淆党。

cv2.THRESH_TOZERO_INV:像素點(diǎn)的灰度值大于該閾值的不進(jìn)行任何改變,像素點(diǎn)的灰度值小于該閾值的讶凉,其灰度值全部變?yōu)?染乌。

Python+opencv代碼:

def getPicMinRect(pic):

? ? GrayImage = np.array(pic).reshape(40,40).astype(np.uint8)

? ? ret,thresh1=cv2.threshold(GrayImage,10,255,cv2.THRESH_BINARY)?

? ? ret,thresh2=cv2.threshold(GrayImage,10,255,cv2.THRESH_BINARY_INV)?

? ? ret,thresh3=cv2.threshold(GrayImage,10,255,cv2.THRESH_TRUNC)?

? ? ret,thresh4=cv2.threshold(GrayImage,10,255,cv2.THRESH_TOZERO)?

? ? ret,thresh5=cv2.threshold(GrayImage,10,255,cv2.THRESH_TOZERO_INV)?

? ? titles = ['Gray Image','BINARY','BINARY_INV','TRUNC','TOZERO','TOZERO_INV']?

? ? images = [GrayImage, thresh1, thresh2, thresh3, thresh4, thresh5]?

? ? for i in xrange(6):?

? ? ? plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')?

? ? ? plt.title(titles[i])?

? ? ? plt.xticks([]),plt.yticks([])?

? ? plt.show()


自適應(yīng)閾值:

當(dāng)同一幅圖像上的不同部分的具有不同亮度時(shí)。這種情況下我們需要采用自適應(yīng)閾值懂讯。此時(shí)的閾值是根據(jù)圖像上的每一個(gè)小區(qū)域計(jì)算與其對(duì)應(yīng)的閾值荷憋。因此在同一幅圖像上的不同區(qū)域采用的是不同的閾值,從而使我們能在亮度不同的情況下得到更好的結(jié)果褐望。

Python-OpenCV中提供了閾值(threshold)函數(shù):cv2.adaptiveThreshold(src, maxValue, adaptive_method, threshold_type, block_size, param1)

好吧勒庄,這玩意的threshold_type其實(shí)就兩種:CV_THRESH_BINARY, CV_THRESH_BINARY_INV

adaptive_method也有兩種: CV_ADAPTIVE_THRESH_MEAN_C, CV_ADAPTIVE_THRESH_GAUSSIAN_C

函數(shù) cvAdaptiveThreshold 將灰度圖像變換到二值圖像,采用下面公式:

switch(threshold_type):

? ? case CV_THRESH_BINARY:

? ? ? ? if src(x,y)>T(x,y):

? ? ? ? ? ? dst(x,y) = maxValue

? ? ? ? else:

? ? ? ? ? ? dsy(x,y) = 0

? ? case CV_THRESH_BINARY_INV:

? ? ? ? if src(x,y)>T(x,y):

? ? ? ? ? ? dst(x,y) = 0

? ? ? ? else:

? ? ? ? ? ? dsy(x,y) = maxValue

其中 T(x,y)為當(dāng)前像素點(diǎn)單獨(dú)計(jì)算的閾值

對(duì)方法 CV_ADAPTIVE_THRESH_MEAN_C瘫里,先求出block中的均值实蔽,再減掉param1。

對(duì)方法 CV_ADAPTIVE_THRESH_GAUSSIAN_C 减宣,先求出block中的加權(quán)和(gaussian)盐须, 再減掉param1。

Python+opencv代碼:

def getPic(pic):

? ? GrayImage = np.array(pic).reshape(40,40).astype(np.uint8)

? ? th1 = cv2.adaptiveThreshold(GrayImage,255,cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY,3,5)

? ? th2 = cv2.adaptiveThreshold(GrayImage,255,cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY,3,50)

? ? th3 = cv2.adaptiveThreshold(GrayImage,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,3,5)

? ? th4 = cv2.adaptiveThreshold(GrayImage,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,3,50)

? ? titles = ['Gray Image', 'Adaptive Mean prama1=5',?

? ? 'Adaptive Mean prama1=50', 'Adaptive Gaussian prama1=5','Adaptive Gaussian prama1=50']?

? ? images = [GrayImage, th1, th2, th3, th4]?

? ? for i in xrange(5):?

? ? ? plt.subplot(2,3,i+1),plt.imshow(images[i])?

? ? ? plt.title(titles[i])?

? ? ? plt.xticks([]),plt.yticks([])?

? ? plt.show()


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末漆腌,一起剝皮案震驚了整個(gè)濱河市贼邓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闷尿,老刑警劉巖塑径,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異填具,居然都是意外死亡统舀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門劳景,熙熙樓的掌柜王于貴愁眉苦臉地迎上來誉简,“玉大人,你說我怎么就攤上這事盟广∶拼” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵筋量,是天一觀的道長(zhǎng)烹吵。 經(jīng)常有香客問我碉熄,道長(zhǎng),這世上最難降的妖魔是什么肋拔? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任锈津,我火速辦了婚禮,結(jié)果婚禮上凉蜂,老公的妹妹穿的比我還像新娘琼梆。我一直安慰自己,他們只是感情好跃惫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布叮叹。 她就那樣靜靜地躺著,像睡著了一般爆存。 火紅的嫁衣襯著肌膚如雪蛉顽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天先较,我揣著相機(jī)與錄音携冤,去河邊找鬼。 笑死闲勺,一個(gè)胖子當(dāng)著我的面吹牛曾棕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菜循,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼翘地,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了癌幕?” 一聲冷哼從身側(cè)響起衙耕,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎勺远,沒想到半個(gè)月后橙喘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胶逢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年厅瞎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片初坠。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡和簸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碟刺,到底是詐尸還是另有隱情比搭,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布南誊,位于F島的核電站身诺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏抄囚。R本人自食惡果不足惜霉赡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望幔托。 院中可真熱鬧穴亏,春花似錦、人聲如沸重挑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谬哀。三九已至刺覆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間史煎,已是汗流浹背谦屑。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留篇梭,地道東北人氢橙。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像恬偷,于是被迫代替她去往敵國(guó)和親悍手。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1.簡(jiǎn)單閥值cv2.threshold() 當(dāng)像素值高于閥值時(shí)袍患,我們給這個(gè)像素賦予一個(gè)新值(可能是白色)坦康,否則我們...
    Zoe_C閱讀 911評(píng)論 0 0
  • 簡(jiǎn)單閾值 這里,問題很簡(jiǎn)單协怒,如果像素值超過閾值涝焙,就給分配一個(gè)值(可能是白色),否則給分配另一個(gè)值(可能是黑色)孕暇。用...
    xxxss閱讀 4,595評(píng)論 1 52
  • 一個(gè)簡(jiǎn)單的閾值例子就是選擇一個(gè)像素值p仑撞,然后將小于p的所有像素強(qiáng)度設(shè)置為零,并且將所有像素值大于p設(shè)置為255.以...
    HaveyYeung閱讀 5,288評(píng)論 1 5
  • 圖像閾值操作 圖像閾值操作目的是從灰度圖像中分離出目標(biāo)區(qū)域和背景區(qū)域 圖像的二值化就是將圖像上的像素點(diǎn)的灰度值設(shè)置...
    深思海數(shù)_willschang閱讀 4,205評(píng)論 0 12
  • 我的老家是在浙江妖滔,也是個(gè)臺(tái)風(fēng)高發(fā)地隧哮,夏天一來動(dòng)不動(dòng)臺(tái)風(fēng)就來來回回幾次瓶逃。但浙江的臺(tái)風(fēng)和廈門的臺(tái)風(fēng)還是有所區(qū)別的讲弄,廈門...
    陳木蒙閱讀 393評(píng)論 0 0