如果图像是二进制边界图像,如何将白色像素转换为其他颜色?

时间:2018-07-09 06:27:10

标签: matlab

我正在显示以下二进制格式的边界图像

边界图像

我想将白色像素转换为不同的颜色,一次只能使用一种颜色。

我们如何做到这一点?

 image = imread('binaryImage.png');

 %Sysnex to convert into different color image ?%

2 个答案:

答案 0 :(得分:1)

启动一个新脚本,并将以下函数粘贴到其上,然后将其保存在项目的同一文件夹中,然后,只要要将图像转换为颜色,就可以使用该函数,应将二进制图像作为第一个参数,并提供RGB颜色作为第二个参数,例如,如果您想要红色,可以使用myRGB = BW2RGB(myBinaryim,[255,0,0])

    function RGBimage = BW2RGB(BWimage,RGBcolor)
    RGBimage(:,:,1)=BWimage;
    RGBimage(:,:,2)=BWimage;
    RGBimage(:,:,3)=BWimage;
    RGBimage = uint8(RGBimage);
    for m = 1:size(BWimage,1)
     for n=1:size(BWimage,2)
      if(BWimage(m,n)==1)
        RGBimage(m,n,1)=RGBcolor(1);
        RGBimage(m,n,2)=RGBcolor(2);
        RGBimage(m,n,3)=RGBcolor(3);
      end
     end
    end

答案 1 :(得分:0)

如果想要灰度图像,可以执行以下操作:

coloredImage = image*color_you_want;

对于真彩色,这有点不同,因为您需要将每个像素转换为RGB像素。

color = [0.2, 0.8, 0.3];
coloredImage = zeros(size(image)(1), size(image)(2), 3);
coloredImage(:,:,1) = image*color(1);
coloredImage(:,:,2) = image*color(2);
coloredImage(:,:,3) = image*color(3);

您可以使用for循环轻松地对其进行调整,从而设置不同的颜色。您将颜色矢量转换成矩阵,并在循环的每一步中,采用由特定行表示的颜色。