如何从彩色图像中删除/重新分配小像素区域(边缘)? (MATLAB)

时间:2016-08-29 13:33:05

标签: image matlab colors image-segmentation labeling

我有带索引颜色的分割蒙版。不幸的是,物体边缘有(有色)噪音。在从一个颜色区域到下一个颜色区域的过渡处,存在不同颜色的小像素区域,将两个颜色区域分开(由在边缘处转换透明像素引起)。

See image: Segmentation with Noise

我想通过指定一个相邻大区域的颜色来消除这种噪音(使用MATLAB)。没关系,哪一个 - 主要是删除小区域。 可以假设可以通过这种方式移除任何颜色的小区域(重新分配到相邻的大区域)。

如果是二进制图像,我可以使用bwareaopen(在此Q& A:Remove small chunks of labels in an image中建议)。将图像转换为每种颜色的二进制图像可能是一种变通方法,但是这种方法很昂贵(对于许多颜色而言)并且会使重新分配的问题保持打开状态。我希望有更优雅的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

检查以下内容:

  • 将RGB转换为索引图像。
  • 在索引地图上应用中值过滤器。
  • 转换回RGB
RGB = imread('GylzKm.png');

%Convert RGB to indexed image with 4 levels
[X, map] = rgb2ind(RGB, 4);

%Apply median filter on 4 levels images
X = medfilt2(X, [5, 5]);

%Convert indexed image back to RGB.
J = ind2rgb(X, map);

figure;imshow(J);

黑色边框有点问题。

enter image description here