1. 程式人生 > >通過灰度線性映射增強圖像對比度實現PS中的色階

通過灰度線性映射增強圖像對比度實現PS中的色階

photoshop turn 直線 並且 clas 類比 pos 適用於 17.

通過灰度線性映射增強圖像對比度

Halcon中如何通過灰度線性映射增強圖片對比度呢?不急,我先講點其他的。

如果你用過Photoshop,那麽想必對增強圖像的對比度很熟悉。在Photoshop中,我們對下面這張圖執行“色階”調整:

技術分享圖片

執行“色階”調整:可以觀察到圖片的對比度明顯增強。(白的更白,黑的更黑了

技術分享圖片

它的原理是這樣的:將原圖中灰度值小於55的點全部強制置為0,將灰度值高於140的點強制置為255,並且將55~140之間的色階強行拓寬均勻映射到0~255之間,其效果是圖像對比度增強了。如下圖所示:

技術分享圖片

如果還不好理解,那麽再看看在Photoshop中用“曲線”

調整對比度:

技術分享圖片

再看看:

技術分享圖片

執行“曲線”調整之前,“曲線”是上圖中的藍線,斜率為1,即y = x。輸入灰階是多少,輸出灰階也是多少

調整之後,藍線變成了一條斜率更大的直線,它經過(55, 0)(140, 255)這兩個點。該直線斜率為: 255.0 / (140 - 55) = 3

該直線可表示為:y = 3x - 55 * 3

設Min = 55, Max = 140

則該直線可表示為:y = k * x - Min * k , 其中:k = 255.0/(Max - Min)

我們在曲線中這樣調整增強對比度的原理與之前在“色階”中調整的原理相同。

再回到Halcon中。Halcon中灰度值映射的算子主要有scale_image_maxscale_imagescale_image_max類似於Photoshop中的自動對比度,不易於精確控制,而scale_image則更好控制。

scale_image(Image : ImageScaled : Mult, Add : )

其輸出圖像與輸入圖像、輸入參數的關系如下:

g‘ := g * Mult + Add (g是輸入圖像Image,g‘ 是輸出圖像ImageScaled)

我們再對比一下之前我們“曲線”調整中得出的公式:y = k * x - Min * k , 其中:k = 255.0/(Max - Min)

可以類比得:Mult = k, Add = - Min * k, 即Mult = k, Add = - Min * Mult

但是將Mult、Add作為參數的函數功能不太直觀,最好將Max、Min作為函數的參數,因此我封裝出了scale_gray_map (Image, Image2, Min, Max)函數,該函數的內容如下:

Mult := 255.0 / (Max - Min)
Add := -Mult * Min
scale_image (Image, Image2, Mult, Add)
return ()

具體如下圖所示:

技術分享圖片

技術分享圖片

Halcon中這種增強對比度的方法同樣適用於多通道的彩色圖像。

通過灰度線性映射增強圖像對比度實現PS中的色階