我有两个单独的图像:第一个图像只包含黑色的圆形物体,而第二个图像只包含绿色的圆形物体。我正在尝试制作一个代码,用于确定黑色物体中有多少绿色。如下图所示,将图像1(仅限黑色对象的图像)和图像2(仅限绿色对象的图像)叠加时,可能会出现三种不同的情况。如何找到重叠的连接组件
我试图提取使用regionprops
黑色和绿色物体的像素指标和检查时是否有使用ismember
任何重叠的像素。每个单元格包含单个对象的像素索引。我觉得我在代码中做了一些错误的事情,但我似乎无法掌握它究竟是什么。我确信有一个更简单的方法来做到这一点。
blackProperties = regionprops(logical(blackImage),'all');
greenProperties = regionprops(logical(greenImage),'all');
numBlackObjects = length(blackProperties);
numGreenObjects = length(greenProperties);
blackPixels = cell(1,numBlackObjects);
greenPixels = cell(1,numGreenObjects);
for j = 1:numBlackObjects
blackPixels{j} = blackProperties(j).PixelIdxList;
end
for j = 1:numGreenObjects
greenPixels{j} = greenProperties(j).PixelIdxList;
end
matchMem = zeros(100,2);
for j = 1:numel(blackPixels)
blackPix = blackPixels{j};
for i = 1:numel(greenPixels)
greenPix = greenPixels{i};
match = ismember(blackPix,greenPix);
matchMem(match,1) = find(match);
matchMem(match,2) = i;
end
end
你能告诉我们使用'regionprops'来获取'blackPixels'和'greenPixels'的代码吗?你可以用布尔逻辑轻松解决这个问题。 – Suever
你的图片有相同的尺寸? – obchardon
@Suever,我编辑了问题 – Senyokbalgul