国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

opencv python 圖像二值化/簡單閾值化/大津閾值法

luoyibu / 3282人閱讀

摘要:對于非雙峰圖像,二值化不準確。如果未使用閾值法,則與之前使用的閾值相同在第一種情況下,將全局閾值應用為值在第二種情況下,直接應用了的閾值在第三種情況下,使用高斯內核過濾圖像以消除噪聲,然后應用閾值處理代碼

Image Thresholding

1簡單的閾值化

cv2.threshold第一個參數是源圖像,它應該是灰度圖像. 第二個參數是用于對像素值進行分類的閾值, 第三個參數是maxVal,它表示如果像素值大于(有時小于)閾值則要給出的值. OpenCV提供不同類型的閾值,它由函數的第四個參數決定. 不同的類型是:

cv2.THRESH_BINARY 如果 src(x,y)>threshold ,dst(x,y) = max_value; 否則,dst(x,y)=0
cv.THRESH_BINARY_INV 如果 src(x,y)>threshold,dst(x,y) = 0; 否則,dst(x,y) = max_value
cv.THRESH_TRUNC 如果 src(x,y)>threshold,dst(x,y) = max_value; 否則dst(x,y) = src(x,y)
cv.THRESH_TOZERO 如果src(x,y)>threshold,dst(x,y) = src(x,y) ; 否則 dst(x,y) = 0
cv.THRESH_TOZERO_INV 如果 src(x,y)>threshold,dst(x,y) = 0 ; 否則dst(x,y) = src(x,y)

代碼

import cv2
import numpy as np
import matplotlib.pylab  as plt

img = cv2.imread("img.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 = ["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()

2自適應閾值化

圖像在不同區域具有不同照明條件時,應進行自適應閾值處理.因此,我們為同一圖像的不同區域獲得不同的閾值,并且它為具有不同照明的圖像提供了更好的結果.
cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst])
adaptiveMethod:決定如何計算閾值

cv2.ADAPTIVE_THRESH_MEAN_C:閾值是鄰域的平均值

cv2.ADAPTIVE_THRESH_GAUSSIAN_C:閾值是鄰域值的加權和,其中權重是高斯窗口

blockSize:決定了鄰域的大小
C:從計算的平均值或加權平均值中減去的常數

代碼

import cv2
import numpy as np
import matplotlib.pylab  as plt

img = cv2.imread("img.jpg",0)
img = cv2.medianBlur(img,5)

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)

titles = ["Original Image", "Global Thresholding (v = 127)",
            "Adaptive Mean Thresholding", "Adaptive Gaussian Thresholding"]
images = [img, th1, th2, th3]

for i in range(4):
    plt.subplot(2,2,i+1),plt.imshow(images[i],"gray")
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])
plt.show()

[lz是密集恐懼癥,有點不忍直視……]

3 大津閾值法

根據雙峰圖像的圖像直方圖自動計算閾值。 (對于非雙峰圖像,二值化不準確。)

使用cv.threshold()但是傳遞了一個額外的標志v.THRESH_OTSU.對于閾值,只需傳遞零.然后算法找到最佳閾值并返回為第二個輸出retVal。如果未使用Otsu閾值法,則retVal與之前使用的閾值相同.

在第一種情況下,將全局閾值應用為值127.在第二種情況下,直接應用了Otsu的閾值.在第三種情況下,使用5x5高斯內核過濾圖像以消除噪聲,然后應用Otsu閾值處理.
代碼

import cv2
import numpy as np
import matplotlib.pylab  as plt

img = cv2.imread("img.jpg",0)
# global thresholding
ret1,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)

# Otsu"s thresholding
ret2,th2 = cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

# Otsu"s thresholding after Gaussian filtering
blur = cv2.GaussianBlur(img,(5,5),0)
ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

# plot all the images and their histograms
images = [img, 0, th1,
          img, 0, th2,
          blur, 0, th3]
titles = ["Original Noisy Image","Histogram","Global Thresholding (v=127)",
          "Original Noisy Image","Histogram","Otsu"s Thresholding",
          "Gaussian filtered Image","Histogram","Otsu"s Thresholding"]

for i in range(3):
    plt.subplot(3,3,i*3+1),plt.imshow(images[i*3],"gray")
    plt.title(titles[i*3]), plt.xticks([]), plt.yticks([])
    plt.subplot(3,3,i*3+2),plt.hist(images[i*3].ravel(),256)
    plt.title(titles[i*3+1]), plt.xticks([]), plt.yticks([])
    plt.subplot(3,3,i*3+3),plt.imshow(images[i*3+2],"gray")
    plt.title(titles[i*3+2]), plt.xticks([]), plt.yticks([])

plt.show()

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41990.html

相關文章

  • 用JavaScript來計算兩個圖像的相似度

    摘要:最近看了阮一峰老師的相似圖片搜索的原理二,其中介紹了通過內容特征法來對比兩個圖片的相似性。不知道是不是哪步出錯了,感覺用這個方法計算出來的結果并不理想 最近看了阮一峰老師的相似圖片搜索的原理(二),其中介紹了通過內容特征法來對比兩個圖片的相似性。 大致步驟: 把圖片都縮放到50x50大小 轉成灰度圖片 利用大津法(Otsus method)確定閾值 通過閾值再對圖片進行二值化 對比兩...

    Leck1e 評論0 收藏0
  • 使用PythonOpenCV進行基本的圖像處理——提取紅色圓圈輪廓并繪制

    摘要:使用,進行基本的圖像處理提取紅色圓圈輪廓并繪制效果圖源碼寫這篇博客源于博友的提問,想提取圖片中的紅色圓圈坐標,并繪制封閉的輪廓。還是使用一系列圖像處理,得到了比較理想的結果。 ...

    Gu_Yan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<