日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【OpenCV 例程200篇】208. Photoshop 对比度自动调整算法

發布時間:2023/12/8 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【OpenCV 例程200篇】208. Photoshop 对比度自动调整算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenCV 例程200篇 總目錄


【youcans 的 OpenCV 例程200篇】208. Photoshop 對比度自動調整算法

對比度是指圖像中明暗區域最亮的白和最暗的黑之間不同亮度層級的測量,差異范圍越大代表對比越大。 當對比率達到 120:1 就可以容易地顯示生動、豐富的色彩,對比率高達 300:1 時就可支持各階的顏色。

對比度對視覺效果的影響非常關鍵。高對比度對于圖像的清晰度、細節表現、灰度層次表現都有很大幫助。

對比度調整的目的通常是增強對比度,形成清晰的圖像效果和醒目的視覺沖擊力。

Photoshop 提供了自動對比度調整功能(AutoContrast),通過自動將圖像最深的顏色加強為黑色,最亮的部分加強為白色,以增強圖像的亮度和暗度的對比度。

Photoshop 中的自動對比度調整算法,與自動色階調整算法基本相同,區別在于對比度自動調整不是對三個通道分別調整,而是對各通道按統一的比例進行調整。首先獲取圖像的亮度信息,然后根據修剪比例對亮度進行動態范圍的拉伸,同比例調整 R,G,B 三個通道,因此不會出現色偏問題。

Enhance Monochromatic Contrast
Clips all channels identically. This preserves the overall color relationship while making highlights appear lighter and shadows appear darker. The Auto Contrast command uses this algorithm.

參考文獻: Set Auto adjustment options (adobe.com)

輸入色階調整,先根據黑場閾值和白場閾值對圖像的動態范圍進行線性拉伸,再根據灰場調節值進行伽馬變換,對發白(曝光過度)或過暗(曝光不足)進行矯正。

V1={0,Vin<Sin255,Vin>Hin255?(Vin?Sin)/(Hin?Sin),elseV2=255?(V1/255)1/M\begin{aligned} & V_1 = \begin{cases} 0 &, V_{in}<S_{in} \\ 255 &, V_{in}>H_{in} \\ 255 * {(V_{in}-S_{in})}/{(H_{in}-S_{in})} &, else \end{cases} \\ \\ & V_2 = 255 * (V_1 / 255)^{1/M} \end{aligned} ?V1?=??????0255255?(Vin??Sin?)/(Hin??Sin?)?,Vin?<Sin?,Vin?>Hin?,else?V2?=255?(V1?/255)1/M?

輸出色階調整是基于動態范圍進行線性拉伸:

Vout={0,V2<0255,V2>255Sout+(Hout?Sout)?V2?/255,elseV_{out} = \begin{cases} 0 &, V_{2}<0 \\ 255 &, V_{2}>255 \\ S_{out} + {(H_{out}-S_{out})} * V_2 */255 &, else \end{cases} Vout?=??????0255Sout?+(Hout??Sout?)?V2??/255?,V2?<0,V2?>255,else?


例程 14.15:Photoshop 對比度自動調整算法

本例程實現 Photoshop 的對比度自動調整算法,對三個通道同時調整。

# 14.15 Photoshop 對比度自動調整算法def autoLevels(img, cutoff=0.1): # 自動色階調整channels = img.shape[2] # h,w,chtable = np.zeros((1,256,3), np.uint8)for ch in range(channels):# cutoff=0.1, 計算 0.1%, 99.9% 分位的灰度值low = np.percentile(img[:,:,ch], q=cutoff) # ch 通道, cutoff=0.1, 0.1 分位的灰度值high = np.percentile(img[:,:,ch], q=100 - cutoff) # 99.9 分位的灰度值, [0, high] 占比99.9%# 輸入動態線性拉伸Sin = min(max(low, 0), high - 2) # Sin, 黑場閾值, 0<=Sin<HinHin = min(high, 255) # Hin, 白場閾值, Sin<Hin<=255difIn = Hin - SinV1 = np.array([(min(max(255*(i-Sin)/difIn, 0), 255)) for i in range(256)])# 灰場伽馬調節gradMed = np.median(img[:,:,ch]) # 拉伸前的中值Mt = V1[int(gradMed)] / 128. # 拉伸后的映射值V2 = 255 * np.power(V1/255, 1/Mt) # 伽馬調節# 輸出線性拉伸Sout, Hout = 5, 250 # Sout 輸出黑場閾值, Hout 輸出白場閾值difOut = Hout - Souttable[0, :, ch] = np.array([(min(max(Sout + difOut*V2[i]/255, 0), 255)) for i in range(256)])return cv.LUT(img, table)def autoContrast(img, cutoff): # 自動對比度調整gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) # 轉換為灰度圖像# 計算 0.1%, 99.9% 分位的灰度值Sin = np.percentile(gray, q=cutoff) # cutoff=0.1, 0.1 分位的灰度值Hin = np.percentile(gray, q=100 - cutoff) # 99.9 分位的灰度值, [0, per999] 占比99.9%# 輸入動態線性拉伸difIn = Hin - SinV1 = np.array([(min(max(255 * (i-Sin)/difIn,0), 255)) for i in range(256)])# 灰場伽馬調節, Mt: 0.01~9.99gradMed = np.median(gray) # 拉伸前的中值Mt = V1[int(gradMed)] / 160. # 拉伸后的映射值V2 = 255 * np.power(V1/255, 1/Mt) # 伽馬調節# 輸出線性拉伸Sout, Hout = 5, 250 # Sout 輸出黑場閾值, Hout 輸出白場閾值difOut = Hout - Souttable = np.array([(min(max(Sout + difOut*V2[i]/255, 0), 255)) for i in range(256)]).astype("uint8")imgTone = cv.LUT(img, table)return imgTone# Photoshop 自動對比度調整算法img = cv.imread("../images/Fig0310b.tif", flags=1) # 讀取彩色圖像# img = cv.imread("../images/demist02.png", flags=1) # 讀取彩色圖像# 色階自動調整cutoff = 0.1 # 截斷比例, 建議范圍 [0.0,1.0]levelsAuto = autoLevels(img, cutoff)# 對比度自動調整cutoff = 0.1 # 截斷比例, 建議范圍 [0.0,1.0]contrastAuto = autoContrast(img, cutoff)plt.figure(figsize=(9, 6))plt.subplot(131), plt.title("Origin"), plt.axis('off')plt.imshow(cv.cvtColor(img, cv.COLOR_BGR2RGB))plt.subplot(132), plt.title("AutoLevels"), plt.axis('off')plt.imshow(cv.cvtColor(levelsAuto, cv.COLOR_BGR2RGB))plt.subplot(133), plt.title("AutoContrast"), plt.axis('off')plt.imshow(cv.cvtColor(contrastAuto, cv.COLOR_BGR2RGB))plt.tight_layout()plt.show()


例程運行結果的上圖接近灰度圖像,色階自動調整與對比度自動調整的效果類似,沒有明顯的區別。而在下圖中出,色階自動調整由于對 R/G/B 三個通道單獨進行調整,出現了明顯的色偏問題;而對比度自動調整則不會發生色偏。



【本節完】

版權聲明:
參考文獻: Use the Photoshop Levels adjustment (adobe.com)
youcans@xupt 原創作品,轉載必須標注原文鏈接:(https://blog.csdn.net/youcans/article/details/125389684)
Copyright 2022 youcans, XUPT
Crated:2022-6-20
歡迎關注 『youcans 的 OpenCV 例程 200 篇』 系列,持續更新中
歡迎關注 『youcans 的 OpenCV學習課』 系列,持續更新中

201. 圖像的顏色空間轉換
202. 查表快速替換(cv.LUT)
203. 偽彩色圖像處理
204. 圖像的色彩風格濾鏡
205. 調節色彩平衡/飽和度/明度
206. Photoshop 色階調整算法
207. Photoshop 色階自動調整算法
208. Photoshop 對比度自動調整算法

總結

以上是生活随笔為你收集整理的【OpenCV 例程200篇】208. Photoshop 对比度自动调整算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。