【发布时间】:2018-05-09 20:35:29
【问题描述】:
我有一张黑白图像,如下所示:
我想分离这张图片的白色部分,然后将它们保存为单独的图片。此图像有四个白色部分。我想将它们分开并保存四个新图像;每个都包含图像的白色部分。
为此,我编写了以下代码:
BW=imread('img11_Inp.jpg');
imshow(BW);
BW=imbinarize(BW);
[L, num] = bwlabel(BW);
for k = 1 : num
thisBlob = ismember(L, k);
h = int2str(k);
filname = strcat(h,'_Out.jpg');
imwrite(thisBlob,filname);
figure
imshow(thisBlob, []);
end
问题
此代码将白色部分分开并保存,但新图像中保存的白色部分的大小与原始图像中的相同。请参阅下面的输出图像:
输出图片
所需的输出图像
我希望输出图像包含增大的原始图像白色部分的大小。以下图片是我想要的:
问题
如何修改上面的代码,才能得到想要的输出图片?
【问题讨论】:
-
您想在图像中保留多少黑色?
-
与所需输出图像中显示的一样多
-
以精确的数字/像素定义它。如果白色在原始图像的边缘怎么办?你还想在它的侧面涂上黑色吗?
-
没有固定数量的黑色像素要显示在白色部分周围。输出图像中的黑色像素应尽可能多,以便在图像的白色部分周围可以看到一些黑色。不,如果白色部分位于原始图像的边缘,我不想在侧面显示黑色。
标签: image matlab image-processing crop