openCV:圖像的閾值處理

閾值處理

定義

閾值處理即圖像二值化沮焕。是圖像分割的一種最簡單的方法蔼两。二值化可以把灰度圖像轉(zhuǎn)換成二值圖像色徘。把大于某個(gè)臨界灰度值的像素灰度設(shè)為灰度極大值各薇,把小于這個(gè)值的像素灰度設(shè)為灰度極小值业岁,從而實(shí)現(xiàn)二值化鳞仙。

API

ret, dst = cv2.threshold(src, thresh, maxval, type)

  • src: 輸入圖,只能輸入單通道圖像笔时,通常來說為灰度圖

  • dst: 輸出圖

  • thresh: 閾值

  • maxval: 當(dāng)像素值超過了閾值(或者小于閾值棍好,根據(jù)type來決定),所賦予的值

  • type:二值化操作的類型允耿,包含以下5種類型:

    • cv2.THRESH_BINARY 超過閾值部分取maxval(最大值)借笙,否則取0
    • cv2.THRESH_BINARY_INV THRESH_BINARY的反轉(zhuǎn)
    • cv2.THRESH_TRUNC 大于閾值部分設(shè)為閾值,否則不變
    • cv2.THRESH_TOZERO 大于閾值部分不改變较锡,否則設(shè)為0
    • cv2.THRESH_TOZERO_INV THRESH_TOZERO的反轉(zhuǎn)

例子

import cv2 #opencv讀取的格式是BGR
import numpy as np
import matplotlib.pyplot as plt#Matplotlib是RGB
%matplotlib inline 

img=cv2.imread('cat.jpg')
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img_gray.shape
(414, 500)
ret, thresh1 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)
ret, thresh2 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV)
ret, thresh3 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TRUNC)
ret, thresh4 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO)
ret, thresh5 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO_INV)

titles = ['Original Image', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV']
images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]

for i in range(6):
    plt.subplot(2, 3, i + 1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()
全局閾值

自適應(yīng)閾值

定義

上述使用的是全局閾值业稼,整幅圖像采用同一個(gè)數(shù)作為閾值。這種方法并不適應(yīng)與所有情況蚂蕴,尤其是當(dāng)同一幅圖像上的不同部分的具有不同亮度時(shí)低散。這種情況下我們需要采用自適應(yīng)閾值。此時(shí)的閾值是根據(jù)圖像上的每一個(gè)小區(qū)域計(jì)算與其對(duì)應(yīng)的閾值骡楼。因此熔号,在同一幅圖像上的不同區(qū)域采用的不同的閾值,從而使我們能在亮度不同的情況下得到更好的結(jié)果鸟整。

API

cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)

  • src:原圖引镊,即輸入圖像,是一個(gè)8位單通道的圖像篮条;

  • maxValue:分配給滿足條件的像素的非零值弟头;

  • adaptiveMethod:自適應(yīng)閾值的方法,通常有以下幾種方法涉茧;

    • (1)ADAPTIVE_THRESH_MEAN_C赴恨,閾值T(x,y)是(x,y)減去C的Blocksize×Blocksize鄰域的平均值。

    • (2)ADAPTIVE_THRESH_GAUSSIAN_C 伴栓,閾值T(x嘱支,y)是(x蚓胸,y)減去C的Blocksize×Blocksize鄰域的加權(quán)和(與高斯相關(guān))挣饥,默認(rèn)sigma(標(biāo)準(zhǔn)差)用于指定的Blocksize除师;具體的情況可以參見getGaussianKernel函數(shù);

  • thresholdType:閾值的類型必須是以下兩種類型扔枫,

    • (1)THRESH_BINARY汛聚,正向二值化

    • (2)THRESH_BINARY_INV ,反向二值化

  • blockSize:像素鄰域的大小短荐,用來計(jì)算像素的閾值倚舀,blockSize必須為奇數(shù),例如忍宋,3痕貌,5,7等等糠排;

  • C:從平均數(shù)或加權(quán)平均數(shù)減去常量舵稠。通常,它是正的入宦,但也可能是零或負(fù)數(shù)哺徊。

例子

thresh1 = cv2.adaptiveThreshold(img_gray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,5,2)
thresh2 = cv2.adaptiveThreshold(img_gray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY_INV,5,2)
thresh3 = cv2.adaptiveThreshold(img_gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,2)
thresh4 = cv2.adaptiveThreshold(img_gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,5,2)

titles = ['Original Image', 'THRESH_MEAN', 'THRESH_MEAN_INV', 'THRESH_GAUSSIAN', 'THRESH_GAUSSIAN_INV']
images = [img, thresh1, thresh2, thresh3, thresh4]

for i in range(5):
    plt.subplot(2, 3, i + 1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]), plt.yticks([])
plt.show()
自適應(yīng)閾值
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市乾闰,隨后出現(xiàn)的幾起案子落追,更是在濱河造成了極大的恐慌,老刑警劉巖涯肩,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件轿钠,死亡現(xiàn)場離奇詭異,居然都是意外死亡病苗,警方通過查閱死者的電腦和手機(jī)疗垛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铅乡,“玉大人继谚,你說我怎么就攤上這事≌笮遥” “怎么了花履?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長挚赊。 經(jīng)常有香客問我诡壁,道長,這世上最難降的妖魔是什么荠割? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任妹卿,我火速辦了婚禮旺矾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘夺克。我一直安慰自己箕宙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布铺纽。 她就那樣靜靜地躺著柬帕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狡门。 梳的紋絲不亂的頭發(fā)上陷寝,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音其馏,去河邊找鬼凤跑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛叛复,可吹牛的內(nèi)容都是我干的仔引。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼致扯,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼肤寝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起抖僵,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤鲤看,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后耍群,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體义桂,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蹈垢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了慷吊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡曹抬,死狀恐怖溉瓶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谤民,我是刑警寧澤堰酿,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站张足,受9級(jí)特大地震影響触创,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜为牍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一哼绑、第九天 我趴在偏房一處隱蔽的房頂上張望岩馍。 院中可真熱鬧,春花似錦抖韩、人聲如沸蛀恩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赦肋。三九已至,卻和暖如春励稳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背囱井。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工驹尼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人庞呕。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓新翎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親住练。 傳聞我的和親對(duì)象是個(gè)殘疾皇子地啰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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

  • 閾值處理 閾值處理即圖像二值化。是圖像分割的一種最簡單的方法讲逛。二值化可以把灰度圖像轉(zhuǎn)換成二值圖像亏吝。把大于某個(gè)臨界灰...
    隕星落云閱讀 883評(píng)論 0 2
  • 圖像閾值操作 圖像閾值操作目的是從灰度圖像中分離出目標(biāo)區(qū)域和背景區(qū)域 圖像的二值化就是將圖像上的像素點(diǎn)的灰度值設(shè)置...
    深思海數(shù)_willschang閱讀 4,219評(píng)論 0 12
  • 1.簡單閥值cv2.threshold() 當(dāng)像素值高于閥值時(shí),我們給這個(gè)像素賦予一個(gè)新值(可能是白色)盏混,否則我們...
    Zoe_C閱讀 914評(píng)論 0 0
  • 圖像的二值化就是將圖像上的像素點(diǎn)的灰度值設(shè)置為0或255蔚鸥,這樣將使整個(gè)圖像呈現(xiàn)出明顯的黑白效果。在數(shù)字圖像處理中许赃,...
    小兵12138閱讀 2,572評(píng)論 0 1
  • 不知道什么時(shí)候止喷,想要主動(dòng)的學(xué)習(xí)思考,開始排斥雞湯的文字混聊,開始在閱讀時(shí)傲嬌的告訴自己弹谁,不要被洗腦,學(xué)會(huì)反駁句喜。思考似乎...
    棍棍屈小會(huì)閱讀 177評(píng)論 0 0