2012-10-11 71 views
2

我問過去,有人建議我使用麥克,但我沒有足夠的錢有它:/Matlab的圖像恢復到其原來的顏色

enter image description here

於是我拍下前,我在圖像中添加了3個圓圈作爲圖像中的位置:第一個圓圈是紅色,[255 0 0]的RGB,第二個圓圈是RGB [0 255 0],第三個是藍色[ 0 0 255]。因此,我可以看到每個像素平均值的變化,並通過此更改修正整個圖像。

我有每個圓圈的所有像素。我做了像素的平均值,我得到了接下來的事情:

在紅圈的所有的平均RGB所包含的像素爲[243 15 26]。

綠圈的所有包含像素的平均RGB是[29 235 56]。

和大約藍色圓圈它是[14 33 250]。

我如何通過新紅\綠\藍色圓圈RGB的結果修正圖像中每個像素的顏色?

+2

目前尚不清楚你想要做什麼。你是什​​麼意思「圖像中每個像素的顏色」?你指的是哪個像素?還有什麼是「新的RGB」?來自圈子的平均RGB值?你的問題是用他們的估計平均值代替圓圈像素值嗎? – gevang

+0

@gevang,對不起。我試圖再解釋一遍。謝謝! –

回答

1

如果您假定線性顏色映射,則可以構造一個描述從原始顏色變化的線性系統,例如, (0,0,255)到觀察的顏色,例如。 (14,33,250)。

基本上,Y = A * x,其中x是原始的色彩,y是所觀察到的顏色,A是變換矩陣。

一旦你計算出A,你可以反其道而行,以獲得所需的變換與Y去X。然後,您可以對所有像素應用A ^( - 1)以進行線性色彩校正。

+0

這個轉換矩陣是關於綠色的變化。通過相同的方式,我可以找到藍色和紅色的變換矩陣。我如何將它們全部結合到一個變換矩陣?或者我可能不需要組合? –

+0

不,它是一個3x3矩陣,它操作三維向量,所以它是所有R,G,B的一個矩陣。 – ypnos

+0

好吧,我按照你的建議做了。我做了:X = A ^( - 1)* Y爲了獲得「原始」顏色,但我得到了負值。我能用他們做什麼?它不好,因爲rgb不能是負面的:/謝謝! –