给图像一个黑色背景?

vin*_*ini 2 matlab opencv image image-processing

在MATLAB中有没有办法去除白色背景并将其变成黑色?

说我有这个图像:

在此输入图像描述

当我应用答案中建议的代码时,我得到以下输出:哪个不完美

在此输入图像描述

Alc*_*sta 6

正如安德烈注意到的那样,问题在于并非所有背景像素都是"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.
Run Code Online (Sandbox Code Playgroud)

这是输出(您也可以在im2bw中尝试不同的阈值):

在此输入图像描述

  • 即使在使用自定义处理Bitmap的RAW图像中,您也可以获得它.它是光学和传感器限制的自然属性(查看有关MTF/PSF的信息) - http://www.imatest.com/docs/sharpness/ (3认同)