我有RGB博物馆JPG图像。他们中的大多数都有一面或多面的图像脚注,我想删除它们。我是使用绘画软件手动完成的。现在我应用以下matlab代码自动删除图像脚注。我得到了一些好的结果,但对于其他图像,它没有删除任何边框。请帮助我更新此代码以将其应用于所有图像吗?
'rgbIm = im2double(imread('A3.JPG'));
hsv=rgb2hsv(rgbIm);
m = hsv(:,:,2);
foreground = m > 0.06; % value of background
foreground = bwareaopen(foreground, 1000); % or whatever.
labeledImage = bwlabel(foreground);
measurements = regionprops(labeledImage, 'BoundingBox');
ww = measurements.BoundingBox;
croppedImage = imcrop(rgbImage, ww);'
答案 0 :(得分:0)
为了消除边界,你可以使用“imclearborder”,它在边界处检查标记的组件并清除它们。警告!如果ROI接触边界,它可能会移除。为了避免这种情况,您可以在清除边框之前使用带有所需“strel”的“imerode” - (一条线或一张光盘)。对所有图像起作用的准确性或一般化方法完全取决于将前景和背景分开的“阈值”。
更通用的方法可能是 - 尝试提取脚注的属性。例如,如果它们只是一些文本,您可以通过使用沿着cols的线结构元素的边缘检测和形态开放来轻松地移除它们。 (文本检测的基本属性)
希望它有所帮助。
如果您上传图片,我可以给您一个明确的想法或方法。