2017-07-19 60 views
2

我有一個尺寸爲144 * 2209的圖像,其動態範圍很大(從-1108到984)。具有大動態範圍的圖像的圖像歸一化

我想要顯示這個圖像,因爲這個範圍需要被帶入0到255,並且我需要規範化圖像。

這裏存在這樣的問題:當如此大的動態範圍變得緊湊時,歸一化之後的像素值變得彼此非常接近,使得圖像沒有按需要顯示。

可以做些什麼來解決這個問題???

這裏是鏈接到IMAGE

+3

有高動態範圍壓縮的方法。看下面的文章http://www.cs.huji.ac.il/~danix/hdr/hdrc.pdf –

+0

如果你只想顯示它,你可以使用'imagesc(img)'來自動縮放顏色範圍。 – Zep

+0

我已經試過'imagesc(img)'...沒有任何好處! – Navdeep

回答

2

您可以使用線性變換來更改原始圖像的動態範圍,但請注意,您將修改圖像的信息。

要做到這一點,在Matlab的8位範圍,只需要使用下面的代碼片段:

bins = pow2(8); % = range 
lin_eq_img = round((bins - 1) * (img - min_img)/(max_img - min_img)); 

但它會略微影響形象: 8-bit equalization

只是幾句話:

  • 即使您的圖像動態範圍高於8位深度,也不會將其視爲「大動態範圍」
  • 取決於你想做什麼以及如何做,你可能要考慮在16位動態中使用先前的線性變換以避免丟失細節(通過「擠壓」像素值分佈)
  • 你不能想要像素值的強度應在每像素8位深度給定的值內,並說您修改了圖像顯示方式:這不是無損操作!
  • 如果你知道你想提高什麼,有大量的非線性變換,其可幫助

編輯:

16位的均衡版本將「保持你的陰影更清晰」 (沒有細節的損失),但是,當然,渲染的圖像將佔用更多的空間。下面是一個比較:

8-bit vs. 16-bit equalization

我會強烈建議你在2^16強進行直方圖規範化值跨度,以避免細節損失。

+0

感謝您的幫助! – Navdeep