黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

Python+OpenCV基本全局閾值處理(數字圖像處理-岡薩雷斯

系統 2359 0

全局閾值處理方法前提:當物體和背景像素的灰度分布十分明顯時,可以用適用于整個圖像的單個(全局)閾值。即可使用全局閾值處理。

算法思路:
(1)輸入原圖,轉化為灰度圖;
(2)對于灰度圖,為全局閾值T0選擇一個初始估計值(本人選擇為0~255中值127);
(3)迭代(4)(5)(6)(7)步驟,迭代次數可自行選擇;
(4)用T0分割灰度圖,將其分為兩組像素,G1由灰度值大于T0的所有像素組成,G2由所有小于T的所有像素組成;
(5)對G1和G2的像素分別計算平均灰度值m1和m2;
(6)計算一個新的閾值:T1=1/2(m1+m2);
(7)如果T1-T0=0,則為二值圖閾值,否則繼續迭代。

代碼如下:

            
              import cv2 as cv
import numpy as np

# 轉灰
def rgb2gray(img):
    h=img.shape[0]
    w=img.shape[1]
    img1=np.zeros((h,w),np.uint8)
    for i in range(h):
        for j in range(w):
            img1[i,j]=0.144*img[i,j,0]+0.587*img[i,j,1]+0.299*img[i,j,2]
    return img1

# 計算新閾值
def threshold(img,T):
    h=img.shape[0]
    w=img.shape[1]
    G1=G2=0
    g1=g2=0
    for i in range (h):
        for j in range (w):
            if img[i,j]>T:
                G1+=img[i,j]
                g1+=1
            else:
                G2+=img[i,j]
                g2+=1
    m1=int(G1/g1)
    m2=int(G2/g2)   # m1,m2計算兩組像素均值
    T0=int((m1+m2)/2)   # 據公式計算新的閾值
    return T0

def decide(img,T):
    h=img.shape[0]
    w=img.shape[1]
    img1=np.zeros((h,w),np.uint8)
    T0=T
    T1=threshold(img,T0)
    for k in range (100):   # 迭代次數為經驗值,可據實際情況選定
        if abs(T1-T0)==0:   # 若新閾值減舊閾值差值為零,則為二值圖最佳閾值
            for i in range (h):
                for j in range (w):
                    if img[i,j]>T1:
                        img1[i,j]=255
                    else:
                        img1[i,j]=0
            break
        else:
            T2=threshold(img,T1)
            T0=T1
            T1=T2   # 變量轉換,保證if條件為新閾值減舊閾值
    return img1

image=cv.imread("D:/Testdata/grow.tif")
grayimage=rgb2gray(image)
thresholdimage=decide(grayimage,127)
cv.imshow("image",image)
cv.imshow("grayimage",grayimage)
cv.imshow("thresholdimage",thresholdimage)
cv.waitKey(0)
cv.destroyAllWindows()

            
          

實驗結果:
Python+OpenCV基本全局閾值處理(數字圖像處理-岡薩雷斯-10.3.2)_第1張圖片 左圖為原圖,右圖為灰度圖

Python+OpenCV基本全局閾值處理(數字圖像處理-岡薩雷斯-10.3.2)_第2張圖片
此圖為二值圖

此方法為最基本二值化圖像方法,在實際應用中會從在諸多不足,但確是閾值分割的基礎,需要了解掌握。


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論