Halcon中如何通過灰度線性映射增強(qiáng)圖片對比度呢?不急,我先講點其他的。
如果你用過Photoshop,那么想必對增強(qiáng)圖像的對比度很熟悉。在Photoshop中,我們對下面這張圖執(zhí)行“色階”調(diào)整:
執(zhí)行“色階”調(diào)整:可以觀察到圖片的對比度明顯增強(qiáng)。(白的更白,黑的更黑了)
它的原理是這樣的:將原圖中灰度值小于55的點全部強(qiáng)制置為0,將灰度值高于140的點強(qiáng)制置為255,并且將55~140之間的色階強(qiáng)行拓寬均勻映射到0~255之間,其效果是圖像對比度增強(qiáng)了。如下圖所示:
如果還不好理解,那么再看看在Photoshop中用“曲線”調(diào)整對比度:
再看看: 執(zhí)行“曲線”調(diào)整之前,“曲線”是上圖中的藍(lán)線,斜率為1,即y = x。輸入灰階是多少,輸出灰階也是多少。 調(diào)整之后,藍(lán)線變成了一條斜率更大的直線,它經(jīng)過(55, 0)、(140, 255)這兩個點。該直線斜率為: 255.0 / (140 - 55) = 3 該直線可表示為:y = 3x - 55 * 3
設(shè)Min = 55, Max = 140 則該直線可表示為:y = k * x - Min * k , 其中:k = 255.0/(Max - Min)
我們在曲線中這樣調(diào)整增強(qiáng)對比度的原理與之前在“色階”中調(diào)整的原理相同。
再回到Halcon中。Halcon中灰度值映射的算子主要有scale_image_max和scale_image。scale_image_max類似于Photoshop中的自動對比度,不易于精確控制,而scale_image則更好控制。
scale_image(Image : ImageScaled : Mult, Add : ) 其輸出圖像與輸入圖像、輸入?yún)?shù)的關(guān)系如下: g' := g * Mult + Add (g是輸入圖像Image,g' 是輸出圖像ImageScaled)
我們再對比一下之前我們“曲線”調(diào)整中得出的公式:y = k * x - Min * k , 其中:k = 255.0/(Max - Min) 可以類比得:Mult = k, Add = - Min * k, 即Mult = k, Add = - Min * Mult。
但是將Mult、Add作為參數(shù)的函數(shù)功能不太直觀,最好將Max、Min作為函數(shù)的參數(shù),因此我封裝出了scale_gray_map (Image, Image2, Min, Max)函數(shù),該函數(shù)的內(nèi)容如下: Mult := 255.0 / (Max - Min)
具體如下圖所示:
Halcon中這種增強(qiáng)對比度的方法同樣適用于多通道的彩色圖像。
|
|