我需要将热成像图像转换为灰度图像,以便使用matlab检测温度变化。
我尝试使用内置函数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;
但这些都没有帮助。
示例图片是:
答案 0 :(得分:1)
图像右边有一个小的垂直多色条。它表示已用于Gray-> Color转换的调色板。如果您无法访问此thansform的精确公式,您可以尝试近似:从下到上提取1像素宽的垂直线到阵列。
如果结果数组长度不等于256,则调整范围(如果需要,插值)。现在你有了地图:Color -> Index of this Color = 8-bit Gray Value
。用它来构建灰度图像。如果您需要绝对温度,可以将范围调整到280-350(0.1度)或其他合适的范围。
答案 1 :(得分:0)
JFIF中使用的公式是
Y = 0.299R +0.587G +0.114B
这与你拥有的相当接近。所以当你说你使用的东西不起作用时,我确实知道你的意思。