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


 

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中這種增強對比度的方法同樣適用於多通道的彩色圖像。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM