(数字图像处理)如何用程序辨别一任意多边形内与背景色相同的孔洞?

[复制链接]
查看11 | 回复1 | 2009-12-26 16:50:49 | 显示全部楼层 |阅读模式
唉,我只会用matlab写,看来帮不了你了。我的思路很简单,先将其转化成二值图,再反转,这样洞周围的数据为1,背景及洞内为零;对于洞内的区域,我们对每个元素以其位置为中心,对上、下、左、右四个方向的向量求和,我们可以知道,对该区域,四个方向的和均大于零,而洞外的区域最多也只有三个方向为零,这样就可以找出洞中的每一个元素,对其填充。下面我用matlab写了一个,可以参考一下:clear;clc;I=imread('hole.tif');I=double(I);I=1-I;imshow(I,[]);[mn]=size(I);fori=1:mforj=1:nifI(i,j)==0left=sum(I(i,1:j));right=sum(I(i,j+1:n));up=sum(I(1:i,j));down=sum(I(i+1:m,j));ifleft~=0&&right~=0&&up~=0&&down~=0I(i,j)=1;endendendendI=1-I;I=logical(I);figure,imshow(I)运行结果:


回复

使用道具 举报

千问 | 2009-12-26 16:50:49 | 显示全部楼层
楼上的解法明显是不对的嘛,不能只判断上下左右的。我觉得应该这样:先转化成二值图,然后floodfill,求出每个连通区域。跟图片边界连通的白色区域就是背景,其他都是洞。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行