【问题标题】:Background and foreground color changes背景和前景颜色变化
【发布时间】:2021-02-13 21:27:18
【问题描述】:

您好,我需要将背景颜色设为黑色,前景颜色设为白色。如您所见,我通过将图像传输到二维来做到这一点。我想在 3 维上进行这种颜色的变化,所以我们也不允许将它转移到 bw 中。有没有办法做到这一点?

logo=imread('logo.png');

subplot(2,2,1); imshow(logo);

b=rgb2gray(logo);

subplot(2,2,2); imshow(b);

c=im2bw(b,0.92)

subplot(2,2,3); imshow(c);

c = 1-c;

subplot(2,2,4); imshow(c);

【问题讨论】:

  • 请进一步澄清您的问题,在3维中您可以实现多种颜色,当您将其转换为灰度时您可以制作负片,RGB图像中的负片是什么意思?例如,如果你有红色,你希望它最后是什么?
  • 背景总是黑色,前景总是白色。
  • 但在 RGB 中并非所有颜色都是黑色或白色,如何在 rgb 图像上制作它?
  • 计算c 后,您可以调用repmat(im2double(c), 1, 1, 3) 将其转换回rgb。

标签: matlab image-processing background-color foreground


【解决方案1】:

前言:

要将像素设置为白色或黑色,需要将像素的每一层的强度值设置为 0(黑色)或 255(白色)。

白色像素 → rgb(255,255,255)
黑色像素 → rgb(0,0,0)

冒号可用于获取第三维中的所有索引(获取所有层)。抓取图像左上角的一个 RGB 像素:

RGB_Pixel = Image(1,1,:); 

方法一:

如果您希望保留三个颜色通道,您可以使用矩阵索引将白色背景更改为黑色。矩阵索引也可用于将任何不是白色的地方更改为白色。不幸的是,如果您有一个带有255 强度分量的彩色分量,此方法可能会失效。不过,您的图像似乎并非如此。您可以使用方法 2 以获得更安全的方法。

logo = imread('logo.png');
[Image_Height,Image_Width,Depth]= size(logo);

new_logo = zeros(Image_Height,Image_Width,Depth);

new_logo(logo == 255) = 0;
new_logo(logo ~= 255) = 255;

imshow(new_logo);

方法二:

使用一组扫描整个图像的 for 循环检查每个像素(RGB 三元组)。如果像素的 RGB 强度为rgb(255,255,255),则像素设置为0 (black)。如果像素的 RGB 强度是其他像素,则将像素设置为 255 (white)~ismember() 函数用于检查 RGB 像素的强度是否不是 255 (not-white)

logo = imread('logo.png');

%Grabbing the size of the image%
[Image_Height,Image_Width,~]= size(logo);


for Row = 1: Image_Height
    for Column = 1: Image_Width
    
    %Grabbing RGB pixel%
    RGB_Pixel = logo(Row,Column,:);
    
    if(~ismember(255,RGB_Pixel))
    %RGB pixel is white change
    logo(Row,Column,:) = 255;
    else
    %RGB pixel is coloured change to black% 
    logo(Row,Column,:) = 0;
    end
    
    end
end

imshow(logo);

使用repmat() 函数也是上述评论建议的一个很好的解决方案。这可能是最快的方法,因为您已经有了从灰度图像生成一层的代码。

使用 MATLAB R2019b 运行

【讨论】:

    猜你喜欢
    • 2010-10-03
    • 2017-04-14
    • 2021-10-02
    • 2014-09-14
    • 2017-12-10
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多