2014-11-08 84 views
0

我需要将热像图转换为灰度图以使用matlab检测温度变化。RGB图像到热像图的灰度转换

我试图使用内置函数rgb2gray(),但它对我的图像数据库效率不高,所以我尝试使用颜色和温度之间的相关性然后对其进行插值来计算公式,但随后可能会得到高效的数学公式?

我的公式:

I = 0.29 * rgb_img(:,:,1)+ 0.59 * rgb_img(:,:,2)+ 0.11 * rgb_img(:,:,3);

I = 0.6889 * rgb_img(:,:,1)。+ 5211 * rgb_img(:,:,2)+ 4449 * rgb_img。(:,:,3)+ 72.8;

但这两个都没有帮助。

样本图像是:

http://www.google.com/imgres?imgurl=http://www.breastthermography.com/images/AP-Breast-Case-2.jpg&imgrefurl=http://www.breastthermography.com/case_studies.htm&h=199&w=300&tbnid=48Yto8Y8RtRPjM:&zoom=1&docid=PX1nchTaFQpa3M&ei=ftVdVIatNZCQuATptoLgCA&tbm=isch

+0

这个怎么样 - [在没有rgb2gray的情况下在MATLAB中将彩色图像转换为灰度图像(http://stackoverflow.com/questions/22007612/convert-a-color-image-to-grayscale-in-matlab-without -rgb2gray)? – Divakar 2014-11-08 09:46:31

+2

这些灰度图像应用了色彩图来生成显示的图像,但是您需要回到灰度图像吗?在颜色映射之前您是否无法访问原始数据?否则,你需要构建一个反向查找表,从颜色 - >温度值开始,然后参考每个像素。由于色彩映射具有不连续的色调步骤,因此直接的公式将不起作用。 – Staus 2014-11-08 12:48:35

回答

1

有一个在图像的右边缘小的垂直多色巴。它代表已用于灰度→颜色转换的调色板。如果无法访问此thansform的精确公式,可以尝试近似值:从底部到顶部从阵列中提取1像素宽的垂直线。
如果结果数组长度不等于256,请调整范围(如果需要,则进行插值)。现在你有地图:Color -> Index of this Color = 8-bit Gray Value。用它来构建灰度图像。如果您需要绝对温度,您可以将范围调整到280-350(0.1度)或其他合适的范围。

+0

老兄,我们尝试了相同的方法,从此我们得到了上述第二个公式,这是使用相同的技术计算出来的,但对我们的情况也是无效的。 – 2014-11-10 18:19:15

+0

你尝试过线性依赖,但它肯定是非线性的(可能是分段线性的) – MBo 2014-11-11 06:41:43

0

在JFIF使用的公式是

 Y = 0.299R +0.587G +0.114B 

这是相当接近,你有什么。所以我知道你说什么,当你说你使用什么都行不通。