欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python下opencv圖像閾值處理的使用筆記

系統 1769 0

圖像的閾值處理一般使得圖像的像素值更單一、圖像更簡單。閾值可以分為全局性質的閾值,也可以分為局部性質的閾值,可以是單閾值的也可以是多閾值的。當然閾值越多是越復雜的。下面將介紹opencv下的三種閾值方法。

(一)簡單閾值

簡單閾值當然是最簡單,選取一個全局閾值,然后就把整幅圖像分成了非黑即白的二值圖像了。函數為cv2.threshold()
這個函數有四個參數,第一個原圖像,第二個進行分類的閾值,第三個是高于(低于)閾值時賦予的新值,第四個是一個方法選擇參數,常用的有:

  • cv2.THRESH_BINARY(黑白二值)
  • cv2.THRESH_BINARY_INV(黑白二值反轉)
  • cv2.THRESH_TRUNC (得到的圖像為多像素值)
  • cv2.THRESH_TOZERO
  • cv2.THRESH_TOZERO_INV

該函數有兩個返回值,第一個retVal(得到的閾值值(在后面一個方法中會用到)),第二個就是閾值化后的圖像。
一個實例如下:

            
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('flower.jpg',0) #直接讀為灰度圖像
ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV)
ret,thresh3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC)
ret,thresh4 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
ret,thresh5 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)
titles = ['img','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()
          

Python下opencv圖像閾值處理的使用筆記_第1張圖片 ?

可以看到這里把閾值設置成了127,對于BINARY方法,當圖像中的灰度值大于127的重置像素值為255.

(二)自適應閾值:

前面看到簡單閾值是一種全局性的閾值,只需要規定一個閾值值,整個圖像都和這個閾值比較。而自適應閾值可以看成一種局部性的閾值,通過規定一個區域大小,比較這個點與區域大小里面像素點的平均值(或者其他特征)的大小關系確定這個像素點是屬于黑或者白(如果是二值情況)。使用的函數為:cv2.adaptiveThreshold()
該函數需要填6個參數:

  1. 第一個原始圖像
  2. 第二個像素值上限
  3. 第三個自適應方法Adaptive Method:
    1. ― cv2.ADAPTIVE_THRESH_MEAN_C :領域內均值
    2. ―cv2.ADAPTIVE_THRESH_GAUSSIAN_C :領域內像素點加權和,權 重為一個高斯窗口
  4. 第四個值的賦值方法:只有cv2.THRESH_BINARY 和cv2.THRESH_BINARY_INV
  5. 第五個Block size:規定領域大?。ㄒ粋€正方形的領域)
  6. 第六個常數C,閾值等于均值或者加權值減去這個常數(為0相當于閾值 就是求得領域內均值或者加權值)

這種方法理論上得到的效果更好,相當于在動態自適應的調整屬于自己像素點的閾值,而不是整幅圖像都用一個閾值。

一個實例如下:

            
mport cv2
import matplotlib.pyplot as plt

img = cv2.imread('flower.jpg',0) #直接讀為灰度圖像
ret,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,\
cv2.THRESH_BINARY,11,2) #換行符號 \
th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
cv2.THRESH_BINARY,11,2) #換行符號 \
images = [img,th1,th2,th3]
plt.figure()
for i in xrange(4):
 plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
plt.show()
          

Python下opencv圖像閾值處理的使用筆記_第2張圖片 ?

可以看到上述窗口大小使用的為11,當窗口越小的時候,得到的圖像越細。想想一下,如果把窗口設置足夠大以后(不能超過圖像大?。?,那么得到的結果可能就和第二幅圖像的相同了。

(三)Otsu's二值化

我們前面說到,cv2.threshold函數是有兩個返回值的,前面一直用的第二個返回值,也就是閾值處理后的圖像,那么第一個返回值(得到圖像的閾值)將會在這里用到。

前面對于閾值的處理上,我們選擇的閾值都是127,那么實際情況下,怎么去選擇這個127呢?有的圖像可能閾值不是127得到的效果更好。那么這里我們需要算法自己去尋找到一個閾值,而Otsu's就可以自己找到一個認為最好的閾值。并且Otsu's非常適合于圖像灰度直方圖具有雙峰的情況,他會在雙峰之間找到一個值作為閾值,對于非雙峰圖像,可能并不是很好用。那么經過Otsu's得到的那個閾值就是函數cv2.threshold的第一個參數了。因為Otsu's方法會產生一個閾值,那么函數cv2.threshold的的第二個參數(設置閾值)就是0了,并且在cv2.threshold的方法參數中還得加上語句cv2.THRESH_OTSU。那么什么是雙峰圖像(只能是灰度圖像才有),就是圖像的灰度統計圖中可以明顯看出只有兩個波峰,比如下面一個圖的灰度直方圖就可以是雙峰圖:

Python下opencv圖像閾值處理的使用筆記_第3張圖片 ?

好了現在對這個圖進行Otsu's閾值處理就非常的好,通過函數cv2.threshold會自動找到一個介于兩波峰之間的閾值。一個實例如下:

            
import cv2
import matplotlib.pyplot as plt

img = cv2.imread('finger.jpg',0) #直接讀為灰度圖像
#簡單濾波
ret1,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
#Otsu 濾波
ret2,th2 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
print ret2
plt.figure()
plt.subplot(221),plt.imshow(img,'gray')
plt.subplot(222),plt.hist(img.ravel(),256)#.ravel方法將矩陣轉化為一維
plt.subplot(223),plt.imshow(th1,'gray')
plt.subplot(224),plt.imshow(th2,'gray')
          

Python下opencv圖像閾值處理的使用筆記_第4張圖片 ?

print ret2 得到的結果為122。可以看出似乎兩個結果并沒有很明顯差別(素材也不太好弄~_~!),主要是兩個閾值(127與122)太相近了,如果這兩個隔得很遠那么會很明顯的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久成人精品视频 | 中文视频在线 | 天天干天天操天天做 | 亚洲香蕉久久一区二区三区四区 | 国产一区二区三区在线 | 欧美在线网 | 亚洲欧美综合久久 | 日本久久网 | 日本成人在线网站 | 亚洲成年人免费网站 | 欧美性一区二区三区 | 天天干天天干天天干天天干天天干 | 精品一区二区久久久久久久网站 | 国产精品福利视频手机免费观看 | 狠狠躁夜夜躁人人爽天天高潮 | 国产一级特黄毛片在线毛片 | 夜夜天堂 | 日本久久高清视频 | 色黄视频在线观看 | 伊人精品视频 | 不卡中文一二三区 | 精品国产午夜福利在线观看 | 国产成人禁片免费观看 | 国产精品中文在线 | 久久免费播放视频 | www.国产| 狠狠五月| 精品国产免费久久久久久 | 五月天亚洲综合 | 亚洲成人一区二区三区 | 91九色国产视频 | 免费精品久久久久久中文字幕 | 日韩在线观看视频一区二区三区 | 久久91久久91精品免费观看 | 欧美激情一区二区三级高清视频 | 国产孰妇精品AV片国产m3u8 | 成 人 片 在线观看 激情五月六月婷婷 | 午夜在线观看视频 | 极品美女aⅴ高清在线观看 一级片片 | 精品女同一区二区三区免费播放 | 亚洲综合亚洲国产尤物 |