2012-10-24 85 views
3

直方圖匹配我需要編寫一個函數,將的image2直方圖匹配可映射圖像,讓我們把它image1。但我不允許使用histeq。你能幫我用代碼嗎?MATLAB - 兩幅圖像

PS:我也想知道我會怎麼做,如果操作我被允許使用histeq?提取紅綠藍通道後應該怎麼做? (我不能使用histeq(R2,R1)?)

image1 = imread('color1.jpeg'); 
image2 = imread('color2.jpeg'); 

R1 = image1(:, :, 1); 
G1 = image1(:, :, 2); 
B1 = image1(:, :, 3); 

R2 = image2(:, :, 1); 
G2 = image2(:, :, 2); 
B2 = image2(:, :, 3); 

問候, 艾瑪迪斯

回答

0

我不認爲這個問題是不夠具體。解決此問題的一種方法是將三個通道轉換爲灰度圖像(rgb2gray),計算兩個直方圖(hist),然後在直方圖之間找到所需的映射並將其應用於原始圖像的每個通道。

轉換爲灰度是沒有必要的,可以在每個通道上執行此算法,然後在以後加入通道在一起。

檢查這個question,它採用histq

+0

我不明白'HnRed1'是在他的代碼中。他在哪個區域跳過了哪些步驟? – Xentius

+0

不知道,也許'hist(Red1)'? – BorisM

+0

查看http://en.wikipedia.org/wiki/Histogram_equalization,它解釋了'histq'的作用。 – BorisM

0

直方圖匹配算法由3個階段組成: 1-計算第一個圖像的標準化CDF(T(r))。 2-計算歸一化第二圖像(G(z))的CDF。計算G^-1(T(r))並將第一圖像的強度值變換爲期望的一個。