python图像灰度化_基于Python的图像阈值化分割(迭代法)

阅读: 评论:0

python图像灰度化_基于Python的图像阈值分割(迭代法)1.阈值化分割原理
通过对图像的灰度直⽅图进⾏数学统计,选择⼀个或多个阈值将像素划分为若⼲类。⼀般情况下,当图像由灰度值相差较⼤的⽬标和背景组成时,如果⽬标区域内部像素灰度分布均匀⼀致,背景区域像素在另⼀个灰度级上也分布均匀,这时图像的灰度直⽅图会呈现出双峰特性。
在这种情况下,选取位于这两个峰值中间的⾕底对应的灰度值T作为灰度阈值,将图像中各个像素的灰度值与这个阈值进⾏⽐较,根据⽐较的结果将图像中的像素划分到两个类中。像素灰度值⼤于阈值T的像素点归为⼀类,其余像素点归为另⼀类。经阈值化处理后的图像g(x,y)定义为:
夏利7131
其中f(x,y)为原图像,T为灰度阈值,g(x,y)为分割后产⽣的⼆值图像。
我所理解的教育技术
2.算法流程图
3.代码实现N电信
from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
#读⼊图⽚并转化为矩阵
img = plt.imread('2.jpg')
im = np.array(img)
# 矩阵⼤⼩
w = len(im[0])
#求初始阈值
zmin = np.min(im)
zmax = np.max(im)
t0 = int((zmin+zmax)/2)
西电理学院
#初始化相关变量初始化
t1=0
res1=0
res2=0
s1=0
s2=0
#迭代法计算最佳阈值
while abs(t0-t1)>0:
for i in range(0,l-1):
for j in range(0,w-1):
if im[i,j]
res1=res1+im[i,j]
s1=s1+1
elif im[i,j]>t0:
res2=res2+im[i,j]
s2=s2+1
avg1=res1/s1
avg2=res2/s2
res1 = 0
res2 = 0
住宅部品
s1 = 0
s2 = 0
t1 = t0 #旧阈值储存在t1中
t0=int((avg1+avg2)/2) #计算新阈值
#阈值化分割
#像素点灰度值⼩于最佳阈值t0⽤0填充,其余⽤255填充im = np.where(im[...,:] < t0, 0, 255)
#绘制原图窗⼝
plt.imshow(img , cmap='gray') plt.title('original')
#绘制原图直⽅图并显⽰最佳阈值
plt.figure()
plt.hist(img.ravel(),256) plt.title('hist')
plt.axvline(t0) #绘制最佳阈值分割线
<(25, 6100, "Best Threshold:{}".format(t0), size = 15, alpha = 0.8)
束腰
#绘制阈值化分割后图像
plt.figure()
plt.imshow(Image.fromarray(im) , cmap='gray')
plt.title('new')
#绘制阈值化分割后图像的直⽅图
plt.figure()
plt.hist(im.ravel(),256)
plt.title('hist')
plt.show()
4.阈值化分割结果
原始图像
原始图像直⽅图
阈值化分割后图像
阈值化分割后图像直⽅图
到此这篇关于基于Python的图像阈值化分割(迭代法)的⽂章就介绍到这了,更多相关Python 图像阈值化分割内容请搜索脚本之家以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持脚本之家!

本文发布于:2023-08-16 13:47:52,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/367520.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:阈值   图像   分割   灰度   像素
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图