版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.固定阈值法——直方图双峰法该方法基于图像直方图上出现的双峰现象。当一个图像有双峰现象时,其直方图会出现两个峰,分别对应图像中两种不同的颜色或亮度区域。这时我们可以使用直方图双峰法来自动确定合适的阈值。其基本思路如下:1.计算图像的灰度直方图。2.根据直方图的两个峰的位置,计算出两个峰之间的阈值,作为图像的阈值。3.根据计算出的阈值对图像进行二值化处理,将图像分成目标和背景两个部分。注意:该方法只适用于存在双峰现象的图像,对于单峰或峰不明显的图像,则需要使用其他的阈值分割方法。使用cv2.threshold(src,thresh,maxval,type)函数。常用的阈值处理方法有:代码:#直方图双峰法importcv2importnumpyasnpfrommatplotlibimportpyplotasplt#读取图像(阈值处理方法不同)img=cv2.imread('house.tif',0)x,img1=cv2.threshold(img,150,255,cv2.THRESH_BINARY)x,img2=cv2.threshold(img,150,255,cv2.THRESH_TRUNC)x,img3=cv2.threshold(img,150,255,cv2.THRESH_TOZERO)#显示原始图像和恢复后的图像plt.figure(figsize=(20,20))plt.subplot(221),plt.imshow(img,cmap='gray')plt.title('InputImage'),plt.xticks([]),plt.yticks([])plt.subplot(222),plt.imshow(img1,cmap='gray')plt.title('segimgTHRESH_BINARY'),plt.xticks([]),plt.yticks([])plt.subplot(223),plt.imshow(img2,cmap='gray')plt.title('segimgTHRESH_TRUNC'),plt.xticks([]),plt.yticks([])plt.subplot(224),plt.imshow(img3,cmap='gray')plt.title('segimgTHRESH_TOZERO'),plt.xticks([]),plt.yticks([])plt.show()这种全局阈值处理方法缺点是对噪声的处理的效果并不好,需要进行平滑处理。importcv2importrandomimportnumpyasnpfrommatplotlibimportpyplotaspltimg=cv2.imread('house.tif',0)#加上高斯噪声noise=np.random.normal(0,100,size=img.size).reshape(img.shape[0],img.shape[1])img1=img+noiseimg1=np.clip(img1,0,255)#平滑处理img2=cv2.GaussianBlur(img1,(5,5),0)#直方图双峰法x,img3=cv2.threshold(img,150,255,cv2.THRESH_BINARY)x,img4=cv2.threshold(img1,150,255,cv2.THRESH_BINARY)x,img5=cv2.threshold(img2,150,255,cv2.THRESH_BINARY)#显示原始图像和恢复后的图像plt.figure(figsize=(20,20))plt.subplot(221),plt.imshow(img,cmap='gray')plt.title('InputImage'),plt.xticks([]),plt.yticks([])plt.subplot(222),plt.imshow(img1,cmap='gray')plt.title('noiseimg'),plt.xticks([]),plt.yticks([])plt.subplot(223),plt.imshow(img4,cmap='gray')plt.title('segnoiseimg'),plt.xticks([]),plt.yticks([])plt.subplot(224),plt.imshow(img5,cmap='gray')plt.title('segblurimg'),plt.xticks([]),plt.yticks([])plt.show()2.迭代阈值图像分割这一种自适应的图像分割方法,其主要思想是通过对图像的灰度值进行迭代,不断调整阈值使得分割更加准确。分割步骤如下:1.随机选取一个初始阈值(可以是图像的平均灰度值)2.根据该阈值将图像分割成两部分:小于等于阈值的部分为前景,大于阈值的部分为背景3.计算前景和背景的平均灰度值4.将前景和背景的平均灰度值的平均值作为新的阈值5.如果新的阈值和原来的阈值相同,则分割结束。否则,回到第2步,重复迭代直到收敛代码:#
迭代阈值图像分割法importnumpyasnpfromPILimportImage#读取图像img=Image.open('house.tif').convert('L')width,height=img.sizepixels=img.load()#初始化阈值threshold=150delta=1whiledelta>0:
#根据阈值将图像分割
foreground=[]
background=[]
foryinrange(height):
forxinrange(width):
ifpixels[x,y]>threshold:
background.append(pixels[x,y])#大于阈值的部分为背景
else:
foreground.append(pixels[x,y])#小于等于阈值的部分为前景
avr_foreground=sum(foreground)//len(foreground)
avr_background=sum(background)//len(background)
#更新阈值
new_threshold=(avr_foreground+avr_background)//2
delta=abs(new_threshold-threshold)
threshold=new_threshold#重新分割图像foryinrange(height):
forxinrange(width):
ifpixels[x,y]>threshold:
pixels[x,y]=255
else:
pixels[x,y]=0#显示分割后的图像img.show('result.jpg')优点:
1.迭代阈值图像分割相对于静态阈值分割而言,具有更高的实用性和鲁棒性。
2.该方法能够有效地应对光照变化、背景复杂多样等情况下的图像分割问题。缺点:
对于大尺寸图像,迭代阈值图像分割的计算速度可能成为其一个缺点。3.
自适应阈值图像分割3.1常规方法分割步骤如下:1.针对输入的灰度图像,定义一个大小为N×NN×NN×N的窗口,在窗口中央选择一个像素点作为处理的核心像素点。2.根据窗口内的像素信息计算局部阈值,作为当前像素的阈值,这个阈值可以是均值、中值、模式等统计量。3.将处理完的像素点和当前像素点的局部阈值进行比较,大于等于阈值的像素点设置为白色,小于阈值的像素点设置为黑色,分割出新的二值化图像。4.将窗口向图像的其他区域移动,继续对各个区域进行高斯自适应阈值分割,直到图像的所有区域都被分割为二值化图像。代码:#自适应阈值图像分割importnumpyasnpfromPILimportImage#图像预处理img=Image.open('house.tif').convert('L')width,height=img.sizepixels=img.load()block_size=11
#设置块大小#分割图像并计算局部阈值foryinrange(0,height,block_size):
forxinrange(0,width,block_size):
#获取局部区域
region=[]
forjinrange(y,y+block_size):
foriinrange(x,x+block_size):
ifi<widthandj<height:
region.append(pixels[i,j])
#计算局部区域平均值作为阈值
threshold=sum(region)//len(region)
#对区域进行二值化处理
forjinrange(y,y+block_size):
foriinrange(x,x+block_size):
ifi<widthandj<height:
ifpixels[i,j]>threshold:
pixels[i,j]=255
else:
pixels[i,j]=0#显示分割后的图像img.show('result.jpg')也可以直接调用cv2.adaptiveThreshold()函数实现。importcv2#读取原始图像img=cv2.imread('house.tif',0)#自适应阈值分割img_thresh=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)#显示结果cv2.imshow('OriginalImage',img)cv2.imshow('AdaptiveThresholding',img_thresh)cv2.waitKey(0)cv2.destroyAllWindows()3.2大津法(OTSU)大津法基于以下观察结果:当图像被分为多个区域时,如果区域内的像素值差异较小,区域的均值方差就会较小。而当区域内像素值差异较大时,区域的均值方差就会较大。因此,局部图像的全局最佳阈值是能使类间方差最大的那个灰度级。步骤:代码:importcv2#读取图片img=cv2.imread('house.tif
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (2024版)跨行业大数据分析合同服务内容扩展
- 2024年土地使用权转让合同违约金责任详细规定
- 2024年工程监理中介服务合同
- (2024版)5G网络覆盖建设项目合作经营合同
- 2024年合作居间佣金协议书
- 2024年工程建设项目全过程总承包合同
- 2024年劳动合同:甲方雇佣乙方为高级工程师
- 2024年个人向公司租用轿车合同
- 2024年宁波物业租赁管理合同
- 2024年委托居间服务合同
- PEP版五年级英语上册教案Unit 1 单元教案 5
- 《汽车低压线束设计规范》
- 中医内科学 消渴课件
- 体检中心理论知识考核试题与答案
- 燃气安全知识与应急管理培训课件
- 工程项目增加签证单
- 国家社科基金申报经验课件
- 被一部电影感动记韩国电影《鸣梁海战》观后感
- 六年级数学上册教案-《百分数》青岛版
- 消防演练方案脚本
- 企业经营管理尽职合规免责事项清单
评论
0/150
提交评论