Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 如何在MATLAB中获得分割后图像的原始颜色?_Image_Matlab_Colors - Fatal编程技术网

Image 如何在MATLAB中获得分割后图像的原始颜色?

Image 如何在MATLAB中获得分割后图像的原始颜色?,image,matlab,colors,Image,Matlab,Colors,我想知道有没有办法在MATLAB中恢复图像的原始颜色color.bmp是一幅彩色图像,在进行分割和将少数像素设置为0等操作后,我想将其从图像中删除,然后用原始颜色将其余的图形“着色”。我确实知道原始图像中的原始RGB值。原来的照片看起来像照片。然后我只留下黄色的字母 i = imread('zestaw3_12.bmp'); o1 = im2double(i); % obliczanie kolorów r = 224/255; g = 220/255; b = 51/255; t = 0

我想知道有没有办法在MATLAB中恢复图像的原始颜色
color.bmp
是一幅彩色图像,在进行分割和将少数像素设置为0等操作后,我想将其从图像中删除,然后用原始颜色将其余的图形“着色”。我确实知道原始图像中的原始RGB值。原来的照片看起来像照片。然后我只留下黄色的字母

i = imread('zestaw3_12.bmp'); 
o1 = im2double(i); 
% obliczanie kolorów
r = 224/255;
g = 220/255;
b = 51/255;

t = 0.1; 
sr = o1(:,:,1) < r + t & o1(:,:,1) > r - t;
sg = o1(:,:,2) < g + t & o1(:,:,2) > g - t;
sb = o1(:,:,3) < b + t & o1(:,:,3) > b - t;
segm = sr & sg & sb; 
se2 = [0 1 0 ; 1 1 1 ; 0 1 0]; 
segm2 =imopen(segm,se2);
segm3 = imclose(segm2,se2); 
i=imread('zestaw3_12.bmp');
o1=2倍(i);
%奥布利扎尼·科洛罗
r=224/255;
g=220/255;
b=51/255;
t=0.1;
sr=o1(:,:,1)r-t;
sg=o1(:,:,2)g-t;
sb=o1(:,:,3)b-t;
segm=sr&sg&sb;
se2=[0110;1111;0110];
segm2=imopen(segm,se2);
segm3=imclose(segm2,se2);
在这里,我删除了相框字母,并使用regionprops功能删除了我不想再看到的字母,这就是结果。我得到的是im_ok逻辑,如图所示。最后,我想把这些F,D和E字母涂成黄色,就像原来的图片一样


如果您有原始图像,请首先将其加载到MATLAB中,然后使用蒙版设置等于0的像素,无论原始图像中的对应位置如何。假设原始图像存储在
original.bmp
中,分割图像存储在
color.bmp
中,只需执行以下操作:

im_orig = imread('original.bmp');
im = imread('color.bmp');
mask = all(im == 0, 3);
im(mask) = im_orig(mask);
前两条语句将两个图像加载到MATLAB工作区中。关键语句是最后一个。它查找一个逻辑掩码,在该掩码中,分割图像中的任何位置,其中每个红、绿、蓝通道都为0(即
RGB=(0,0,0)
),这些位置设置为
true
,而其余位置设置为
false
。在这里,函数帮助我们确保图像中每个空间位置的所有通道值都等于0


然后,我们使用此遮罩直接索引到分割图像中,并从分割图像中设置为黑色的位置复制原始图像中的彩色像素。

如果您有原始图像,首先将其加载到MATLAB中,然后使用蒙版将像素设置为等于0,无论原始图像中的相应位置是什么。假设原始图像存储在
original.bmp
中,分割图像存储在
color.bmp
中,只需执行以下操作:

im_orig = imread('original.bmp');
im = imread('color.bmp');
mask = all(im == 0, 3);
im(mask) = im_orig(mask);
前两条语句将两个图像加载到MATLAB工作区中。关键语句是最后一个。它查找一个逻辑掩码,在该掩码中,分割图像中的任何位置,其中每个红、绿、蓝通道都为0(即
RGB=(0,0,0)
),这些位置设置为
true
,而其余位置设置为
false
。在这里,函数帮助我们确保图像中每个空间位置的所有通道值都等于0


然后,我们使用此遮罩直接索引到分割图像中,并从分割图像中设置为黑色的位置复制原始图像中的彩色像素。

谢谢您的回答,但可能我做错了什么,但它对我不起作用。。在original.bmp中有不同颜色的字母。我所需要做的就是从这张图片中删除所有非黄色的图片,我在这里使用分段。然后我需要删除其中的一些,并使用regionprops函数来完成。在这个操作之后,我收到一个逻辑的im_all,我想把它涂回黄色。我想制作另一个sth.bmp文件,用我想要的颜色填充它,然后在转换成double后对我的im\u进行多重处理,但听起来很蹩脚……请给我看一下(1)你写的代码。(2) 图像本身。从你的帖子中很难确定你到底在做什么。据我所知,你真正想要的其实不是你在最初的问题中所问的。请相应地编辑您的问题。好的,这与您所问的完全不同。你基本上想要找到一个面具下的图像的原始颜色。非常感谢,它是有效的:)谢谢你的回答,但也许我做错了什么,但它对我不起作用。。在original.bmp中有不同颜色的字母。我所需要做的就是从这张图片中删除所有非黄色的图片,我在这里使用分段。然后我需要删除其中的一些,并使用regionprops函数来完成。在这个操作之后,我收到一个逻辑的im_all,我想把它涂回黄色。我想制作另一个sth.bmp文件,用我想要的颜色填充它,然后在转换成double后对我的im\u进行多重处理,但听起来很蹩脚……请给我看一下(1)你写的代码。(2) 图像本身。从你的帖子中很难确定你到底在做什么。据我所知,你真正想要的其实不是你在最初的问题中所问的。请相应地编辑您的问题。好的,这与您所问的完全不同。你基本上想要找到一个面具下的图像的原始颜色。我做的是复制品。非常感谢,它很有效:)