2021-07-05
最近學(xué)習(xí)PS中圖像如何進(jìn)行色度處理的,并參考網(wǎng)上很多大俠的文章,將其圖像處理過程整理一下,其運(yùn)行環(huán)境為PYTHON, OPENCV, NUMPY:
一般情況由于視頻輸出為YUV圖像
第一步:YUV RGB轉(zhuǎn)換
第二步:由于攝像頭的光照問題,先去圖像的暗角,參考如下博客
圖像增強(qiáng)系列之圖像自動去暗角算法。 - Imageshop - 博客園 (cnblogs.com)
第三步: 對圖像進(jìn)行色度調(diào)整,增強(qiáng)圖像效果
def WhiiteBlack(img, Shadow, Highlight, Midtones):if Highlight > 255:Highlight = 255if Shadow < 0:Shadow = 0if Shadow >= Highlight:Shadow = Highlight - 2if Midtones > 3.0:Midtones = 3.0if Midtones < 0.3:Midtones = 0.3maptable = np.arange(256)maptable = np.array(maptable, dtype=int)Diff = Highlight - Shadowexponent = 1.0 / Midtones;coe = 255.0 / DiffrgbDiff = (maptable - Shadow) * coergbDiff = np.maximum(rgbDiff, 0)rgbDiff = np.minimum(rgbDiff, 255)rgbDiff = rgbDiff / 255.0rgbDiff = np.power(rgbDiff, exponent) * 255.0 + 0.5rgbDiff = np.around(rgbDiff, 0)rgbDiff = rgbDiff.astype('uint8')result = cv2.LUT(img, rgbDiff)cv2.imshow('input_image1', result)cv2.waitKey(0)return result第四步:圖像顏色空間的調(diào)整,用于圖像拼接
使用OPENCV中的cvtColor函數(shù),轉(zhuǎn)變RGB為LAB
cv::cuda::cvtColor(gpuSrcImage, gpuDstImage, cv::COLOR_BGR2Lab);
第五步:圖像顏色區(qū)域的均值與標(biāo)準(zhǔn)差
對于標(biāo)準(zhǔn)RECT區(qū)域可以使用opencv::meanStdDev來計算,對于非RECT圖像,需要編寫CUDA KERNEL來計算,對于實(shí)時行不高的場景,可以將圖像數(shù)據(jù)拷貝到內(nèi)存,運(yùn)用CPU進(jìn)行計算
第六步:為圖像拼接進(jìn)行LAB數(shù)據(jù)修正
其原理是運(yùn)用一張圖像的均值與標(biāo)準(zhǔn)差與另外一張圖像均值與標(biāo)準(zhǔn)差進(jìn)行圖像亮度與色度修正。
(Val?- meanR)*(stdL) / (stdR) + meanL?(- Diff) 關(guān)于DIFF的值修正可以使用對數(shù)函數(shù)進(jìn)行微調(diào);
總結(jié)
以上是生活随笔為你收集整理的2021-07-05的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 频谱仪测试gsm信号测试软件,怎样用频谱
- 下一篇: springboot源码 红色J_通达信