如何在图像周围绘制黑色边框

时间:2017-03-17 04:51:16

标签: matlab image-processing crop grayscale noise-reduction

如何裁剪图像,使其仅包含叶子而没有噪点? image

1 个答案:

答案 0 :(得分:3)

如果您拥有Image Processing Toolbox,则可以执行以下操作:

  • Morphologically open图像(去除盐和胡椒的噪音)。
  • 将图像转换为二进制。
  • 检测最大的连续区域(可能是感兴趣的对象)。
  • 将所有其他像素设置为“忽略值”(在本例中为255)。
  • 通过索引边界框“裁剪”原始图像。

function out = q42849445
img = imread('https://i.stack.imgur.com/hTtqz.jpg');
bw = ~imopen(logical(img),strel('disk',10));
stats = regionprops(bw,'Area','SubarrayIdx');
[~,I] = max([stats.Area]);
for ind = setdiff(1:numel(stats),I)
  img(stats(ind).SubarrayIdx{:}) = 255;
end
out = img(stats(I).SubarrayIdx{:});

结果(使用imshow):

Output