有没有办法在 MATLAB 中去除白色背景并将其变成黑色?
假设我有这张图片:
当我应用答案中建议的代码时,我得到以下输出:这并不完美
最佳答案
正如 Andrey 所注意到的,问题在于并非所有背景像素都是“255 白色”。这可能是由于 JPEG 压缩算法造成的,也可能是因为图像中有水果的阴影。
为了解决这个问题,首先通过模糊图像(这是克服 JPEG 伪像所必需的)来获得水果区域的二值掩码,然后用一个非常高的值对图像进行阈值处理,但略低于 255。这里是Matlab 中的解决方案:
I = imread('http://i.stack.imgur.com/5p4jV.jpg'); % Load your image.
H = fspecial('gaussian'); % Create the filter kernel.
I = imfilter(I,H); % Blur the image.
Mask = im2bw(Ig, 0.9); % Now we are generating the binary mask.
I([Mask, Mask, Mask]) = 0; % Now we have the image.
这是输出(您也可以在 im2bw 中尝试不同的阈值):
关于image - 给图像一个黑色背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9178924/