实验目的
比较三种不同阈值处理方法对生成二值图像的影响:
- 全局阈值法
- 自适应阈值法
- 大律法等
注意
- OpenCV使用threshold函数实现阈值化处理。
1、全局阈值法
实现思路
代码
没找到合适的包,所以手动实现。
另外,我发现python竟然支持中文方法名!!!!
#######################################################
###################全局阈值法##########################
#######################################################
def 全局阈值法(img):
img_beifen = img
img_array = np.array(img).astype(np.float32)#把图片转化成数组
I=img_array
zmax=np.max(I)
zmin=np.min(I)
tk=(zmax+zmin)/2#设置初始阈值
#根据阈值将图像进行分割为前景和背景,分别求出两者的平均灰度 zo和zb
b=1
m,n=I.shape;
while b==0:
ifg=0
ibg=0
fnum=0
bnum=0
for i in range(1,m):
for j in range(1,n):
tmp=I(i,j)
if tmp>=tk:
ifg=ifg+1
fnum=fnum+int(tmp) #前景像素的个数以及像素值的总和
else:
ibg=ibg+1
bnum=bnum+int(tmp)#背景像素的个数以及像素值的总和
#