Halcon中如何經過灰度線性映射加強圖片對比度呢?不急,我先講點其餘的。函數
若是你用過Photoshop,那麼想必對加強圖像的對比度很熟悉。在Photoshop中,咱們對下面這張圖執行「色階」調整:spa
執行「色階」調整:能夠觀察到圖片的對比度明顯加強。(白的更白,黑的更黑了)blog
它的原理是這樣的:將原圖中灰度值小於55的點所有強制置爲0,將灰度值高於140的點強制置爲255,而且將55~140之間的色階強行拓寬均勻映射到0~255之間,其效果是圖像對比度加強了。以下圖所示:圖片
若是還很差理解,那麼再看看在Photoshop中用「曲線」調整對比度:原理
再看看:map
執行「曲線」調整以前,「曲線」是上圖中的藍線,斜率爲1,即y = x。輸入灰階是多少,輸出灰階也是多少。方法
調整以後,藍線變成了一條斜率更大的直線,它通過(55, 0)、(140, 255)這兩個點。該直線斜率爲: 255.0 / (140 - 55) = 3im
該直線可表示爲:y = 3x - 55 * 3d3
設Min = 55, Max = 140img
則該直線可表示爲:y = k * x - Min * k , 其中:k = 255.0/(Max - Min)
咱們在曲線中這樣調整加強對比度的原理與以前在「色階」中調整的原理相同。
再回到Halcon中。Halcon中灰度值映射的算子主要有scale_image_max和scale_image。scale_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中這種加強對比度的方法一樣適用於多通道的彩色圖像。