首页 > 其他 > 详细

迭代的(最优的)阈值选择

时间:2019-06-20 16:08:31      阅读:251      评论:0      收藏:0      [点我收藏+]

迭代法阈值选择算法是对双峰法的改进,他首先选择一个近似的阈值T,将图像分割成两个部分,R1和R2,计算出区域R1和R2的均值u1和u2,再选择新的

阈值T=(u1+u2)/2;

重复上面的过程,直到u1和u2不在变化为止,

技术分享图片

实现前后对比:

技术分享图片技术分享图片

实现代码:

import numpy as np
import cv2

img = cv2.imread(./0.jpg, 0)
#print(img[2, 4])
max_value = np.max(img)
min_value = np.min(img)
average_value = (max_value+min_value)/2

h, w = img.shape

while True:
    fnum = 0
    bnum = 0
    fvalue = 0
    bvalue = 0
    faverage = 0
    baverage = 0
    b = 0
    
    for i in range(h):
        for j in range(w):
            if img[i, j] > average_value:
                fnum += 1
                fvalue += img[i, j]
            else:
                bnum += 1
                bvalue += img[i, j]
                
    faverage = fvalue/fnum
    baverage = bvalue/bnum
    new_average = int((faverage + baverage)/2)
    if new_average == int(average_value):
        break
    else:
        average_value = new_average
        print(new_average)

img = cv2.threshold(img, new_average, 255, cv2.THRESH_BINARY)[1]
cv2.imshow(img, img)
cv2.imwrite(9.jpg, img)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

迭代的(最优的)阈值选择

原文:https://www.cnblogs.com/czz0508/p/11059199.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!