2021-07-05

最近学习PS中图像如何进行色度处理的,并参考网上很多大侠的文章,将其图像处理过程整理一下,其运行环境为PYTHON, OPENCV, NUMPY:

一般情况由于视频输出为YUV图像
第一步:YUV RGB转换

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 图像转换使用OPENCV的库完成,使用NP从文件加载单张YUV图片,如果是YUV视频文件,需要调整文件阅读的偏移量。

def yuv_import(filename, width, height):
    size = width * height;
    yuv = np.fromfile(filename, dtype='uint8')
    img = yuv.reshape((height * 3 // 2, width)).astype('uint8')
    src11 = cv2.cvtColor(img, cv2.COLOR_YUV2BGR_I420)
    cv2.imshow('input_image1', src11)
    cv2.waitKey(0)

第二步:由于摄像头的光照问题,先去图像的暗角,参考如下博客

图像增强系列之图像自动去暗角算法。 - Imageshop - 博客园 (cnblogs.com)

第三步: 对图像进行色度调整,增强图像效果

def WhiiteBlack(img, Shadow, Highlight, Midtones):
    if Highlight > 255:
        Highlight = 255
    if Shadow < 0:
        Shadow = 0
    if Shadow >= Highlight:
        Shadow = Highlight - 2
    if Midtones > 3.0:
        Midtones = 3.0
    if Midtones < 0.3:
        Midtones = 0.3
    maptable = np.arange(256)
    maptable = np.array(maptable, dtype=int)
    Diff = Highlight - Shadow
    exponent = 1.0 / Midtones;
    coe = 255.0 / Diff
    rgbDiff = (maptable - Shadow) * coe
    rgbDiff = np.maximum(rgbDiff, 0)
    rgbDiff = np.minimum(rgbDiff, 255)
    rgbDiff = rgbDiff / 255.0
    rgbDiff = np.power(rgbDiff, exponent) * 255.0 + 0.5
    rgbDiff = np.around(rgbDiff, 0)
    rgbDiff = rgbDiff.astype('uint8')
    result = cv2.LUT(img, rgbDiff)
    cv2.imshow('input_image1', result)
    cv2.waitKey(0)
    return result

第四步:图像颜色空间的调整,用于图像拼接

使用OPENCV中的cvtColor函数,转变RGB为LAB

cv::cuda::cvtColor(gpuSrcImage, gpuDstImage, cv::COLOR_BGR2Lab);

第五步:图像颜色区域的均值与标准差

对于标准RECT区域可以使用opencv::meanStdDev来计算,对于非RECT图像,需要编写CUDA KERNEL来计算,对于实时行不高的场景,可以将图像数据拷贝到内存,运用CPU进行计算

第六步:为图像拼接进行LAB数据修正
其原理是运用一张图像的均值与标准差与另外一张图像均值与标准差进行图像亮度与色度修正。
(Val - meanR)*(stdL) / (stdR) + meanL (- Diff) 关于DIFF的值修正可以使用对数函数进行微调;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值