關於高反差保留的用處說明呢,從百度里復制了一段文字,我覺得寫得蠻好的:
高反差保留就是保留圖像的高反差部分,再說得真白些,就是保留圖像上像素與周圍反差比較大的部分,其它的部分都變為灰色。拿一個人物照片來舉例,反差比較大的部分有人的眼睛,嘴,以及身體輪廓。如果執行了就反差保留,這些信息將留下來(與灰色形成鮮明對比)。它的主要作用就是加強圖像中高反差部分。還以人物照片為例子,一般為了使人物皮膚美觀,通常需要執行模糊,執行模糊后人物的線條也被模糊了。在執行模糊之前復制圖像兩個副本,其中一個執行模糊,另一個執行高反差保留,把高反差保留后的圖層放置在模糊圖層的上方,然后執行柔光混合模式,這樣人物的線條就更清楚些。
那么高反差保留算法本身的執行過程是如何的呢,簡單的表達就是:
高反差保留 = 原始圖像 - 高斯模糊圖像 + 127
加上127的目的是為了不讓太多的像素由於不在有效范圍內而導致圖像太黑,從而丟失信息。
簡單的代碼如下:
unsigned char *Pointer , *CloneP; unsigned char * Clone = (unsigned char *) malloc (Height * Stride ); memcpy(Clone, Scan0, Height * Stride); // 復制一個圖層 GuassBlur(Clone, Width ,Height, Stride, Radius); // 對該圖層經進行高斯模糊 for (Y = 0; Y < Height; Y++) { Pointer = Scan0 + Y * Stride; CloneP = Clone + Y * Stride; for (X = 0; X < Width; X++) { ValueB = *Pointer - *CloneP + 127 ; // 混合 *Pointer = Clamp(ValueB); Pointer++; CloneP++; } } free(Clone);
高斯模糊是一種低通濾波器,執行后,圖像中較為平坦的地方變化不大,而邊緣部分被模糊了,如果用原圖 - 高斯模糊則得到的則是強化的邊緣值,高反差保留在PS的英文版中對應的單詞是HighPass,即高通,也就是這個意思。
我這里並不是想強調高反差保留的功能,雖然該算法也有着廣泛的應用。 我這里就是想通過類似於原圖 - 高斯模糊這樣的過程來增強圖像。
很多圖像都需要增強,特別是一些醫學圖像,由於拍攝的硬件或拍攝的場合不理想,得到的圖像往往細節都被隱藏起來,因此,細節的增強顯得尤為重要,而原圖 - 高斯模糊正好是圖像的細節部位的信息的一種表達,因此,如果在模糊圖的基礎上再加上這個細節, 則即減少了噪音,又保持了邊緣等細節(邊緣和噪音都屬於高頻部分的),能有效的增強圖像的信息。
因此,如果用這樣的方式來得到一副圖像:
增強圖像 = 模糊圖像 + Amount *(原始圖像 - 高斯模糊圖像)
其中Amount控制增強的程度,則能起到一定的增強作用。
原圖 Amount = 3 Amount = 6
更好的一種方式則是采用雙邊濾波器來處理,即用雙邊濾波來代替上述高斯模糊的過程。
比如用雙邊模糊,上述效果則更好,如下圖所示。
原圖 Amount = 3 Amount = 6
不過廣泛的測試表明:這個算法使用的范圍似乎不廣,對於很多圖像效果過於明顯。
測試程序下載:鏈接
*********************************作者: laviewpbt 時間: 2014.3.5 聯系QQ: 33184777 轉載請保留本行信息************************