OpenCV---超大圖像二值化和空白區域過濾


超大圖像的二值化方法

1.可以采用分塊方法,

2.先縮放處理就行二值化,然后還原大小

一:分塊處理超大圖像的二值化問題

def big_image_binary(image):
    print(image.shape)  #(4208, 2368, 3)  #超大圖像,屏幕無法顯示完整
    cw,ch = 256,256
    h,w = image.shape[:2]
    gray = cv.cvtColor(image,cv.COLOR_RGB2GRAY)   #要二值化圖像,要先進行灰度化處理 for row in range(0,h,ch):
        for col in range(0,w,cw):
            roi = gray[row:row+ch,col:col+cw]   #獲取分塊
            # ret,binary = cv.threshold(roi,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)  #全局閾值
            binary = cv.adaptiveThreshold(roi,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,127,20)  #局部閾值
            gray[row:row + ch, col:col + cw] = binary  #分塊覆蓋
            print(np.std(binary),np.mean(binary))

    cv.imwrite("binary2.jpg",gray)

(一)全局閾值處理

ret,binary = cv.threshold(roi,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)  #全局閾值

(二)局部閾值(更好)

binary = cv.adaptiveThreshold(roi,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,127,20)  #局部閾值

二:空白區域過濾

def big_image_binary(image):
    print(image.shape)  #(4208, 2368, 3)
    cw,ch = 128,128
    h,w = image.shape[:2]
    gray = cv.cvtColor(image,cv.COLOR_RGB2GRAY)   #要二值化圖像,要先進行灰度化處理
    for row in range(0,h,ch):
        for col in range(0,w,cw):
            roi = gray[row:row+ch,col:col+cw]   #獲取分塊
            dev = np.std(roi)
            avg = np.mean(roi)
            if dev < 15 and avg > 200:  #滿足條件,接近空白區域,讓他變黑
                gray[row:row + ch, col:col + cw] = 0 #全部都賦值為0 else:
                ret,binary = cv.threshold(roi,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
                gray[row:row + ch, col:col + cw] = binary
                print(np.std(binary), np.mean(binary))

    cv.imwrite("binary.jpg",gray)

相關知識補充

(一)numpy中相關方法介紹

numpy.std() 計算矩陣標准差

numpy mean()用法返回數組元素的平均值

(二)空白圖像的過濾(當我們確認該區域為空白圖像,可以不作處理,不進行二分處理)

print(np.std(binary),np.mean(binary))
通過上面獲取圖像的標准差和平均值,當標准差為0,平均值為255時,代表該區域為空白區域
我們可以將該空白區域(或者滿足一定條件的區域),直接設置為0或者255或者其他想要獲取的圖像,不需要進行多余的閾值二分

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM