版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元8从图像中提取前景物体OpenCV数字图像处理目录/CONENTS阈值处理自适应阈值图像分割拓展阅读01020304阈值处理01二值化阈值处理阈值处理通过指定一个阈值,把图像分割为两部分,像素值高于阈值的区域和像素值低于阈值的区域,这两部分可以看作前景物体和背景(retval,dst)=cv2.threshold(src,thresh,maxval,type)
src:输入图像,通常是灰度图像
thresh:阈值
maxval:type为cv2.THRESH_BINARY和cv2.THRESH_BINARY_INV时的最大值。type:阈值类型枚举常量,取值见表二值化阈值处理#Example8_1importcv2image=cv2.imread("imgs/table.jpg")image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)cv2.imshow("Image",image)blurred=cv2.GaussianBlur(image,(5,5),0)#去除噪声cv2.imshow("Blurred",blurred)(_,dst)=cv2.threshold(blurred,180,255,cv2.THRESH_BINARY)#(_,dst)=cv2.threshold(blurred,180,180,cv2.THRESH_BINARY)cv2.imshow("Dst",dst)cv2.waitKey(0)函数cv2.threshold()的第四个参数取值为cv2.THRESH_BINARY时,返回结果dst是一个二值图像,二值中较小的值是0,另一个值由这个函数的第三个参数maxval指定当阈值类型设为cv2.THRESH_BINARY_INV,输入图像中像素值大于thresh时,dst中对应位置像素值为0,否则为maxval。背景变为黑色,前景根据maxval变化。cv2.threshold()参数解析反二值化阈值处理importcv2image=cv2.imread("imgs/table.jpg")image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)cv2.imshow("Image",image)blurred=cv2.GaussianBlur(image,(5,5),0)
#去除噪声cv2.imshow("Blurred",blurred)(_,dst)=cv2.threshold(blurred,180,255,cv2.THRESH_BINARY_INV)#(_,dst)=cv2.threshold(blurred,180,180,cv2.THRESH_BINARY_INV)cv2.imshow("Dst",dst)cv2.waitKey(0)thresh参数影响,设置大于thresh值的像素变为thresh,不变则保持原值,与maxval无关。cv2.threshold()参数无论maxval设置为何值,对输出图像像素值无影响,不影响处理结果。maxval参数无效截断阈值处理函数cv2.threshold()第四个参数取值为cv2.THRESH_TRUNC时,返回结果dst不再是一个二值图像当输入图像中的像素值大于阈值thresh时,目标图像中的像素值取thresh,否则保持不变importcv2image=cv2.imread("imgs/table.jpg")image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)cv2.imshow("Image",image)blurred=cv2.GaussianBlur(image,(5,5),0)cv2.imshow("Blurred",blurred)#(_,dst)=cv2.threshold(blurred,180,255,cv2.THRESH_TRUNC)#(_,dst)=cv2.threshold(blurred,180,180,cv2.THRESH_TRUNC)(_,dst)=cv2.threshold(blurred,100,180,cv2.THRESH_TRUNC)#(_,dst)=cv2.threshold(blurred,100,0,cv2.THRESH_TRUNC)cv2.imshow("Dst",dst)cv2.waitKey(0)自适应阈值02自适应阈值自适应阈值把图像分为多个小的像素邻域,为每个邻域计算一个最佳阈值,这种方法适应于不同区域的最佳阈值发生变化的场合dst=cv2.adaptiveThreshold(src,maxval,method,type,blockSize,C)其中:dst:灰度图像。maxval:条件满足时赋给像素的新值。method:枚举常量,自适应阈值算法,取值参见下表type:阈值类型常数,只能取表8-1中的cv2.THRESH_BINARY或cv2.THRESH_BINARY_INVblockSize:用于计算阈值的邻域大小,例如3,5,7,9,11等。C:计算阈值时需要减去的常数自适应阈值函数cv2.adaptiveThreshold()的返回结果是一个二值图像,像素值分别为0和maxval当阈值类型常数type取cv2.THRESH_BINARY时,输出像素值:当type取cv2.THRESH_BINARY_INV时,输出像素值:自适应阈值importcv2image=cv2.imread("imgs/table.jpg")image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)cv2.imshow("Image",image)blurred=cv2.GaussianBlur(image,(5,5),0)dst1=cv2.adaptiveThreshold(blurred,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,4)cv2.imshow("dst1",dst1)dst2=cv2.adaptiveThreshold(blurred,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,15,3)cv2.imshow("dst2",dst2)cv2.waitKey(0)自适应阈值分水岭分割分水岭方法分水岭算法是一种图像区域分割法在分割的过程中,它会把跟邻近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近(求梯度)的像素点互相连接起来构成一个封闭的轮廓基本思想:包括在地形的每个区域最小值处放置一个水源,从源头淹没整个地形,并在不同水源相遇时建立屏障。由此产生的一组障碍构成了洪水的分水岭交互式分割使用OpenCV的grabCut函数,通过矩形框交互定义前景与可能前景,减少背景干扰,实现更精准的分割。GrabCut图像分割方法交互式分割CarstenRother,VladimirKolmogorov和AndrewBlake的论文:"GrabCut":interactiveforegroundextractionusingiteratedgraphcuts用户在前景物体的周围画矩形框,包住物体的每个部分,算法通过迭代进行分割有时会出现分割错误,这时,用户勾画出错误区域(交互),意思就是说:“这块是前景,你分割成背景了”,或者“这块是背景,你分割成前景了”,然后下次迭代时算法就纠正过来了交互式分割函数:cv.grabCut(img,mask,rect,bgdModel,fgdModel,iterCount[,mode])参数:img:输入图像数组mask:指定背景、前景、可能背景、可能前景的掩膜图像,分别使用cv.GC_BGD,cv.GC_FGD,cv.GC_PR_BGD,cv.GC_PR_FGD或0,1,2,3指定rect:(x,y,w,h)包住前景的矩形框元组bdgModel,fgdModel:算法内部使用,1行65列的全是0的np.float64数组iterCount:迭代次数mode
:cv.GC_INIT_WITH_RECT或cv.GC_INIT_WITH_MASK或两者之和,表示是否使用矩形掩膜,是否使用交互勾画交互式分割importnumpyasnpimportcv2#指定矩形窗口x,y,w,h=50,50,350,220img=cv2.imread('bird2.jpg')cv2.imshow("0",img)#创建掩膜数组和两个分割算法用到的数组mask=np.zeros(img.shape[:2],np.uint8)bgdModel=np.zeros((1,65),np.float64)fgdModel=np.zeros((1,65),np.float64)#查看矩形窗口img1=img.copy()img1=cv2.rectangle(img1,(x,y),(x+w,y+h),(0,0,255))cv2.imshow("1",img1)cv2.waitKey(0)#分割分割图像rect=(x,y,w,h)cv2.grabCut(img,mask,rect,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_RECT)#mask中原来为2或0的改为0,否则改为1mask2=np.where((mask==2)|(mask==0),0,1).astype('uint8')#np.newaxis同步增加维度img=img*mask2[:,:,np.newaxis]cv2.imshow("seg",img)cv2.waitKey(0)交互式分割importnumpyasnpimportcv2img=cv2.imread('lena.png')cv2.imshow("0",img)#创建掩膜数组和两个分割算法用到的数组mask=np.zeros(img.shape[:2],np.uint8)bgdModel=np.zeros((1,65),np.float64)fgdModel=np.zeros((1,65),np.float64)#设置勾画掩膜mask[30:512,50:400]=3mask[50:300,150:200]=1#分割图像mask,bgdModel,fgdModel=cv2.grabCut(img,mask,None,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_MASK)#mask中原来为2或0的改为0,否则改为1mask2=np.where((mask==2)|(mask==0),0,1).astype('uint8')#np.newaxis同步增加维度img=img*mask2[:,:,np.newaxis]cv2.imshow("seg",img)cv2.waitKey(0)交互式分割课堂练习从图像中分割出前景物体,然后为该物体替换背景图像先思考一下,分成哪几个步骤?拓展阅读04通过深度学习,为图像每个像素赋予类别标签,实现像素级分类,提升图像理解。语义分割概念012015年提出,用全卷积层替换全连接层,处理任意尺寸输入,输出相同尺寸的分割图,实现语义分割。全卷积网络FCN02标志着深度学习在语义分割的突破,为后续分割模型发展奠定基础,解决了输出与输入尺寸匹配问题。FCN的贡献与影响03语义分割计算机视觉任务,区分图像内同类对象的不同实例,结合目标检测与语义分割。实例分割定义01传统技术如边缘检测到深度学习驱动,MaskR-CNN等算法显著提升实例分割效果。深度学习的影响02输入图片->
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电梯井中毒初期处置方案
- 内串石墨化炉开发与生产项目可行性研究报告
- 2026年残疾人保护权益保障法知识竞赛题库及答案
- 老年骨关节病护理查房
- 2026年新两类安全员考试模拟试题及答案
- 聚氨酯复合板技术交底
- 2026年中国太保校招面试题及答案
- 葡萄酒酿造有限公司新建项目可行性研究报告
- 肾动脉狭窄:从病理机制到临床决策
- 临港新建卫星推进剂管理组件生产项目可行性研究报告
- 2025年全国硕士研究生招生考试法律硕士(非法学)真题及答案解析
- 2026年陕西省高职单招高考数学试卷试题真题(含答案详解)
- 2025经皮冠状动脉介入治疗指南
- DB37T5130-2026建设工程造价咨询服务标准
- JJG 1189.1-2026 测量用互感器检定规程 第1部分:标准电流互感器
- 申请2026年新产品试用函(6篇)范文
- JJG 1189.8-2026测量用互感器检定规程第8部分:宽量程电流互感器
- 小微企业安全生产管理台账(参考)
- T∕CFA 0199-2025 大型一体化压铸模具技术规范
- 综治中心入驻单位工作制度
- 2026年上海围棋定级考测试题及答案
评论
0/150
提交评论