2014-11-08 307 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 

這是相當接近,你有什麼。所以我知道你說什麼,當你說你使用什麼都行不通。