什么是ROI
ROI是英文Region Of Interest的三个首字母缩写,很多时候我们对图像的分析就是对图像特定ROI的分析与理解,对细胞与医疗图像来说,ROI提取正确才可以进行后续的分析、测量、计算密度等,而且这些ROI区域往往不是矩形区域,一般都是不规则的多边形区域,很多OpenCV初学者都不知道如何提取这些不规则的ROI区域。其实OpenCV中有个非常方便的API函数可以快速提取各种非正常的ROI区域。
提取ROI区域
在做这个之前,首先来了解一下什么图像处理中的mask(遮罩),OpenCV中是如此定义Mask的:八位单通道的Mat对象,每个像素点值为零或者非零区域。当Mask对象添加到图像区上时,只有非零的区域是可见,Mask中所有像素值为零与图像重叠的区域就会不可见,也就是说Mask区域的形状与大小直接决定了你看到最终图像的大小与形状。一个具体的示例如下:
可以看出,mask的作用是可以 帮助我们提取各种不规则的区域。OpenCV中完成上述步骤操作只需要简单调用API函数bitwise_and即可。
于是另外一个问题也随之而来,我们怎么生成这样mask区域,答案是在OpenCV中有两种方法搞定Mask区域生成。
方法一:
通过手动选择,然后通过多边形填充即可做到,代码实现如下:
importcv2ascv importnumpyasnp src=cv.imread("D:/images/gc_test.png") cv.imshow("input",src) h,w,c=src.shape #手工绘制ROI区域 mask=np.zeros((h,w),dtype=np.uint8) x_data=np.array([124,169,208,285,307,260,175]) y_data=np.array([205,124,135,173,216,311,309]) pts=np.vstack((x_data,y_data)).astype(np.int32).T cv.fillPoly(mask,[pts],(255),8,0) cv.imshow("mask",mask) #根据mask,提取ROI区域 result=cv.bitwise_and(src,src,mask=mask) cv.imshow("result",result) cv.waitKey(0)
运行效果如下:
方法二:
这个也是OpenCV新手最迷茫的地方,如何通过程序生成mask,其实真的很简单。看代码演示吧!
src=cv.imread("D:/images/gc_test.png") cv.imshow("input",src) #生成mask区域 hsv=cv.cvtColor(src,cv.COLOR_BGR2HSV) mask=cv.inRange(hsv,(156,43,46),(180,255,255)) cv.imshow("mask",mask) #提取ROI区域,根据mask result=cv.bitwise_and(src,src,mask=mask) cv.imshow("result",result) cv.waitKey(0)
效果如下:
主要是分为三步
提取轮廓ROI
生成Mask区域
提取指定轮廓
特别需要注意的是->其中生成Mask可以根据轮廓、二值化连通组件分析、inRange等处理方法得到。这里基于inRange方式得到mask区域,然后提取。
实际应用演示
最后看两个在实际处理会用到mask实现ROI提取然后重新背景融合之后生成新图像效果:
编辑:jq
-
API
+关注
关注
2文章
1436浏览量
61232 -
代码
+关注
关注
30文章
4596浏览量
67329 -
OpenCV
+关注
关注
29文章
614浏览量
40907 -
mask
+关注
关注
0文章
9浏览量
2876
原文标题:OpenCV中如何提取不规则ROI区域
文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
三维扫描产品外观提取不规则外观轮廓线辅助贴纸设计方案
![三维扫描产品外观<b class='flag-5'>提取</b><b class='flag-5'>不规则</b>外观轮廓线辅助贴纸设计方案](https://file1.elecfans.com//web2/M00/E9/32/wKgaomZO3iaAcTvoAAF4ubwewl0621.jpg)
嵌入式学习-飞凌ElfBoard ELF 1板卡 - 如何在Ubuntu中编译OpenCV库
AD芯片采用外部时钟时,外部时钟源可以是不规则的TTL电平吗?
对于形状近似矩形但边缘有规则起伏的情况,可以使用OpenCV库中的approxPolyDP函数进行多边形拟合和矩形检测。
OpenCV中的BGR格式,在libyuv中对应的那个格式?OpenCV中的RGB格式呢?
【触觉智能 Purple Pi OH 开发板体验】三、Ubuntu镜像安装OpenCV边缘检测开发
用迅为RK3568开发板使用OpenCV处理图像颜色通道提取ROI
迅为RK3568开发板位置提取ROI
不规则透明屏:在商场领域中,图像显示清晰吗?
![<b class='flag-5'>不规则</b>透明屏:在商场领域中,图像显示清晰吗?](https://file.elecfans.com/web2/M00/AF/F9/pYYBAGSmXuqAOvbTAALiTTCR2QY166.png)
无法在OpenVINO trade Docker中运行OpenCV怎么解决?
opencv_videoio_ffmpeg_64.dll缺失,无法在OpenVINO trade中配置OpenCV怎么处理?
使用OpenVINO中包含的OpenCV时无法导入ArUco库如何解决?
1mm不规则形状钣金件罩壳叠料检测解决方案-阿童木双张检测器
![1mm<b class='flag-5'>不规则</b>形状钣金件罩壳叠料检测解决方案-阿童木双张检测器](https://file1.elecfans.com/web2/M00/8D/2B/wKgZomS3iAuAeYpGAADiBSV0WRk505.png)
评论