怎么用matlab代码计算白色线内区域像素数,要完整代码
图片是二值化后,用candy边缘检测得到的,怎么用matlab代码计算白色线内区域像素数???求大神指点,给完整的代码。...
图片是二值化后,用candy边缘检测得到的,怎么用matlab代码计算白色线内区域像素数???求大神指点,给完整的代码。
展开
2个回答
展开全部
图中两个区域都有没闭合的区域, 而如果用闭合采用闭合运算,则需要采取不同的参数, 可考虑分两部分进行计算.因为上部分非闭合区域较多,即使人工处理也有困难(有些地方改连还是不连,难做判断),因此结果还有不完美的地方.
clear all; close all; clc;
I = imread('twoman.jpg');
I = im2bw(I);
[row,col]=size(I);
se = strel('line',10,0);
Ie = imclose(I,se);
L = bwlabel(Ie);
STATS = regionprops(L,'BoundingBox');
figure; imshow(I);hold on;
for i = 1:size(STATS,1)
rectangle('Position',STATS(i).BoundingBox,'EdgeColor','g');
end
If2 = imfill(Ie,'holes');
y = ceil(STATS(1).BoundingBox(1));
x = ceil(STATS(1).BoundingBox(2));
h = ceil(STATS(1).BoundingBox(3));
w = ceil(STATS(1).BoundingBox(4));
I2 = If2(x:x+w,y:y+h);
figure; imshow(I2);title(num2str(sum(sum(I2))));
se = strel('line',4,90);
Ie1 = imclose(I,se);
If1 = imfill(Ie1,'holes');
y = ceil(STATS(2).BoundingBox(1))-5;
x = ceil(STATS(2).BoundingBox(2))-5;
h = ceil(STATS(2).BoundingBox(3))+10;
w = ceil(STATS(2).BoundingBox(4))+10;
I1 = If1(x:x+w,y:y+h);
figure; imshow(I1);title(num2str(sum(sum(I1))));
图中数字为白点的数量
更多追问追答
追问
你又把图像转为二值图像计算的?
追答
我又转了一次二值图是因为我从这里(网页)保存的图片,保险起见再转一次
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |