如何将特定的灰度转换成彩色像素

8视图(30天)
你好;我需要你的帮助对我的项目在大学。我需要再着色metalographic图像。
原始图像
我需要量化铁阶段。我将RGB图像转换为灰度图,因为我觉得更容易定义的区域。
这是灰度的一个,我需要光相位转换成黄色,几乎黑色成绿色和黑色(圆圈)成蓝色。
的目的是量化percentual每个阶段。
我已经尝试通过RGB图像使用这段代码
% %
%提取个人红、绿、蓝通道。
redChannel = rgbImage (:: 1);
greenChannel = rgbImage (:: 2);
blueChannel = rgbImage (:: 3);
%的珍珠岩面具
yellowMask = redChannel > = 130 & greenChannel > = 130 & blueChannel > = 130;
%得到铁素体的面具
GreenMask = redChannel > 60 & greenChannel > 60 & blueChannel > 60 & redChannel < 130 & greenChannel < 130 & blueChannel < 130;
%得到石墨面具
BlueMask = redChannel < = 60 & greenChannel 60 & blueChannel < < = = 60;
%使珠光体铸铁面具黄色
redChannel (yellowMask) = 255;
greenChannel (yellowMask) = 255;
blueChannel (yellowMask) = 0;
%的白色面具绿色
redChannel (GreenMask) = 0;
greenChannel (GreenMask) = 255;
blueChannel (GreenMask) = 0;
%的石墨面具蓝色
redChannel (BlueMask) = 0;
greenChannel (BlueMask) = 0;
blueChannel (BlueMask) = 255;
%重组不同颜色通道成一个单一的、真彩色RGB图像。
rgbImage2 =猫(3 redChannel greenChannel blueChannel);
imshow (rgbImage2)
最终的结果并没有我预期的那么好
提前谢谢!
丹尼尔
7评论
丹尼尔·费尔南德斯
丹尼尔·费尔南德斯 2021年6月1日
问题是像素值不符合的考虑。例如在图像(128 125 106),任何阈值不满足这个条件。我设置的阈值与其他条件但恐怕会影响正确的相位计数。有一种方法可以设定边界限制,计算该地区的?

登录置评。

接受的答案

为副总经理
为副总经理 2021年6月3日
编辑:为副总经理 2021年6月3日
我忘了你在RGB做屏蔽。你是对的。工会的面具不会跨越图像。你可以找到设置的区别,但颜色点都非常接近对角线。它可能足以用亮度指标。区别真的是一样的,但它是更少的代码。
让我们重建计算的面具
inpict = imread (“phases.jpg”);
mkperlite = inpict (:: 1) > = 130 & inpict (:,: 2) > = 130 & inpict (:,:, 3) > = 130;
mkgraphite = inpict (:: 1) < = 60 & inpict (:,: 2) < = 60 & inpict (:,:, 3) < = 60;
mkferrite = inpict (:: 1) < 130 & inpict (:,: 2) < 130 & inpict (:,:, 3) < 130
& inpict (:: 1) > 60 & inpict (:,: 2) > 60 & inpict(:,:, 3) > 60岁;
%这个信息并不一定需要颜色,除非你想要它
outpict = 0(大小(mkperlite));
outpict (mkgraphite) = 0.33;
outpict (mkferrite) = 0.67;
outpict (mkperlite) = 1;
当然,还有洞面具的总和。
你可以使用一个亮度指标避免处理尽可能多的比较。使用不同的面具确保面具跨越形象的总和。
ipict =意味着(inpict, 3);%计算我如溪
%你也可以用V, L, Y,等等
英国石油(bp) = (130);%选择一些断点(随时调整)
mkperlite = ipict > = bp (2);
mkgraphite = ipict < = bp (1);
mkferrite = ~ (mkperlite | mkgraphite);%这使得面具跨越图像
%生成的图像是一样的
outpict2 = 0(大小(mkperlite));
outpict2 (mkgraphite) = 0.33;
outpict2 (mkferrite) = 0.67;
outpict2 (mkperlite) = 1;
imshow2 (outpict2“反转”)
%的面具可以计算分数
N =元素个数(mkgraphite);
fracgraphite =总和(mkgraphite (:)) / N
fracferrite =总和(mkferrite (:)) / N
fracperlite =总和(mkperlite (:)) / N
总和([fracgraphite fracferrite fracperlite])% = 1如预期
可能还会有一些改进(如东南角)在处理反射率/照明问题。我不知道如何处理。
值得指出的是面具的几何形状是什么样子的在三维空间中。考虑到在RGB面具你计算:
注意盒子的联盟选择不要跨域。如果颜色点在图像躺在一个乐队的对角域,许多点会选择逃避所有盒子。你可以选择两个(如上下的),然后选择第三所描述的差别。跨域,但在这种情况下,这将意味着这三个选择之一是比其他人更具包容性。
另一方面,我们可以看看V的表面,我和L的样子。这些不是真正的选择,选择的区域之间的边界在多维数据集:
正如你所看到的,我和L往往体积均匀细分——这是一个边界50%我或把RGB立方体一半。对比这对边界50% V不。
我只是选择了我,因为它是简单的,对称分裂RGB数据集原箱选择联系。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的