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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

OpenCV 例程200篇 總目錄


【youcans 的 OpenCV 例程200篇】208. Photoshop 對(duì)比度自動(dòng)調(diào)整算法

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

對(duì)比度對(duì)視覺(jué)效果的影響非常關(guān)鍵。高對(duì)比度對(duì)于圖像的清晰度、細(xì)節(jié)表現(xiàn)、灰度層次表現(xiàn)都有很大幫助。

對(duì)比度調(diào)整的目的通常是增強(qiáng)對(duì)比度,形成清晰的圖像效果和醒目的視覺(jué)沖擊力。

Photoshop 提供了自動(dòng)對(duì)比度調(diào)整功能(AutoContrast),通過(guò)自動(dòng)將圖像最深的顏色加強(qiáng)為黑色,最亮的部分加強(qiáng)為白色,以增強(qiáng)圖像的亮度和暗度的對(duì)比度。

Photoshop 中的自動(dòng)對(duì)比度調(diào)整算法,與自動(dòng)色階調(diào)整算法基本相同,區(qū)別在于對(duì)比度自動(dòng)調(diào)整不是對(duì)三個(gè)通道分別調(diào)整,而是對(duì)各通道按統(tǒng)一的比例進(jìn)行調(diào)整。首先獲取圖像的亮度信息,然后根據(jù)修剪比例對(duì)亮度進(jìn)行動(dòng)態(tài)范圍的拉伸,同比例調(diào)整 R,G,B 三個(gè)通道,因此不會(huì)出現(xiàn)色偏問(wèn)題。

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.

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

輸入色階調(diào)整,先根據(jù)黑場(chǎng)閾值和白場(chǎng)閾值對(duì)圖像的動(dòng)態(tài)范圍進(jìn)行線性拉伸,再根據(jù)灰場(chǎng)調(diào)節(jié)值進(jìn)行伽馬變換,對(duì)發(fā)白(曝光過(guò)度)或過(guò)暗(曝光不足)進(jìn)行矯正。

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?

輸出色階調(diào)整是基于動(dòng)態(tài)范圍進(jìn)行線性拉伸:

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 對(duì)比度自動(dòng)調(diào)整算法

本例程實(shí)現(xiàn) Photoshop 的對(duì)比度自動(dòng)調(diào)整算法,對(duì)三個(gè)通道同時(shí)調(diào)整。

# 14.15 Photoshop 對(duì)比度自動(dòng)調(diào)整算法def autoLevels(img, cutoff=0.1): # 自動(dòng)色階調(diào)整channels = img.shape[2] # h,w,chtable = np.zeros((1,256,3), np.uint8)for ch in range(channels):# cutoff=0.1, 計(jì)算 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%# 輸入動(dòng)態(tài)線性拉伸Sin = min(max(low, 0), high - 2) # Sin, 黑場(chǎng)閾值, 0<=Sin<HinHin = min(high, 255) # Hin, 白場(chǎng)閾值, Sin<Hin<=255difIn = Hin - SinV1 = np.array([(min(max(255*(i-Sin)/difIn, 0), 255)) for i in range(256)])# 灰場(chǎng)伽馬調(diào)節(jié)gradMed = np.median(img[:,:,ch]) # 拉伸前的中值Mt = V1[int(gradMed)] / 128. # 拉伸后的映射值V2 = 255 * np.power(V1/255, 1/Mt) # 伽馬調(diào)節(jié)# 輸出線性拉伸Sout, Hout = 5, 250 # Sout 輸出黑場(chǎng)閾值, Hout 輸出白場(chǎng)閾值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): # 自動(dòng)對(duì)比度調(diào)整gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) # 轉(zhuǎn)換為灰度圖像# 計(jì)算 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%# 輸入動(dòng)態(tài)線性拉伸difIn = Hin - SinV1 = np.array([(min(max(255 * (i-Sin)/difIn,0), 255)) for i in range(256)])# 灰場(chǎng)伽馬調(diào)節(jié), Mt: 0.01~9.99gradMed = np.median(gray) # 拉伸前的中值Mt = V1[int(gradMed)] / 160. # 拉伸后的映射值V2 = 255 * np.power(V1/255, 1/Mt) # 伽馬調(diào)節(jié)# 輸出線性拉伸Sout, Hout = 5, 250 # Sout 輸出黑場(chǎng)閾值, Hout 輸出白場(chǎng)閾值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 自動(dòng)對(duì)比度調(diào)整算法img = cv.imread("../images/Fig0310b.tif", flags=1) # 讀取彩色圖像# img = cv.imread("../images/demist02.png", flags=1) # 讀取彩色圖像# 色階自動(dòng)調(diào)整cutoff = 0.1 # 截?cái)啾壤? 建議范圍 [0.0,1.0]levelsAuto = autoLevels(img, cutoff)# 對(duì)比度自動(dòng)調(diào)整cutoff = 0.1 # 截?cái)啾壤? 建議范圍 [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()


例程運(yùn)行結(jié)果的上圖接近灰度圖像,色階自動(dòng)調(diào)整與對(duì)比度自動(dòng)調(diào)整的效果類似,沒(méi)有明顯的區(qū)別。而在下圖中出,色階自動(dòng)調(diào)整由于對(duì) R/G/B 三個(gè)通道單獨(dú)進(jìn)行調(diào)整,出現(xiàn)了明顯的色偏問(wèn)題;而對(duì)比度自動(dòng)調(diào)整則不會(huì)發(fā)生色偏。



【本節(jié)完】

版權(quán)聲明:
參考文獻(xiàn): Use the Photoshop Levels adjustment (adobe.com)
youcans@xupt 原創(chuàng)作品,轉(zhuǎn)載必須標(biāo)注原文鏈接:(https://blog.csdn.net/youcans/article/details/125389684)
Copyright 2022 youcans, XUPT
Crated:2022-6-20
歡迎關(guān)注 『youcans 的 OpenCV 例程 200 篇』 系列,持續(xù)更新中
歡迎關(guān)注 『youcans 的 OpenCV學(xué)習(xí)課』 系列,持續(xù)更新中

201. 圖像的顏色空間轉(zhuǎn)換
202. 查表快速替換(cv.LUT)
203. 偽彩色圖像處理
204. 圖像的色彩風(fēng)格濾鏡
205. 調(diào)節(jié)色彩平衡/飽和度/明度
206. Photoshop 色階調(diào)整算法
207. Photoshop 色階自動(dòng)調(diào)整算法
208. Photoshop 對(duì)比度自動(dòng)調(diào)整算法

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。