【发布时间】:2012-09-12 05:12:15
【问题描述】:
我想在matlab中处理一张图片
图像由实心背景和两个样本(顶部和底部)组成。我已经有一个将顶部和底部分开并使其成为两个图像的代码。但是我没有工作的部分是将图像仅裁剪到粘合区域(图像中的红色框,我只标记了顶部)。但是,裁剪后的图像应该是一个矩形,就像红色框一样(黄色背景,之后可以丢弃)。
我知道这可以通过imcrop 完成,但这需要用户手动输入。代码需要自动化,以便可以在没有用户输入的情况下处理更多图像。所有图像都将具有相同的颜色(红色为胶水,黑色为材料)。
有人可以帮我解决这个问题吗?
编辑:感谢您的帮助。我使用以下代码来解决问题。但是,我无法摆脱红色框右侧的黑色部分。这可以通过在拍照前贴上该部分来解决。我用的代码看起来有点奇怪,但是成功统计了图片中的黑色区域并得到了百分比。
a=imread('testim0.png');
level = graythresh(a);
bw2=im2bw(a, level);
rgb2=bw2rgb(bw2);
IM2 = imclearborder(rgb2,4);
pic_negative = ait_imgneg(IM2);
%% figures
% figure()
% image(rgb2)
%
% figure()
% imshow(pic_negative)
%% Counting percentage
g=0;
for j=1:size(rgb2,2)
for i=1:size(rgb2,1)
if rgb2(i,j,1) <= 0 ...
& rgb2(i,j,2) <= 0 ...
& rgb2(i,j,3) <= 0
g=g+1;
end
end
end
h=0;
for j=1:size(pic_negative,2)
for i=1:size(pic_negative,1)
if pic_negative(i,j)== 0
h=h+1;
end
end
end
per=g/(g+h)
如果有人有一些改进代码的建议,我很高兴听到。
【问题讨论】:
-
那么,您想自动将图像分割成“胶水”和“物质”区域(更复杂),还是需要应用矩形“裁剪蒙版”(@slayton 还指出)。如果是后者,不同图像之间的区域是否在大小、位置或其他方式上是固定的?
-
最终的目标是得到试样上胶的百分比(红框内,其他区域应丢弃)。我所拥有的困难是从红色框中裁剪黑色部分,因为这部分不相关。但是,标本可以上下移动(取决于制作照片的人)。但所有图片都与我链接的图片相似。
-
在这种情况下,您可能必须分割每个不同的图像(请参阅我的答案以获得快速而肮脏的解决方案),或者将在第一个序列帧上检测到的框跟踪到所有其余图像(即使用运动估计、变形或关键点检测)。
标签: image matlab image-processing crop image-segmentation