计算机视觉加强之图像美化

本文介绍了计算机视觉中的图像处理技术,包括彩色图片直方图、直方图均衡化(灰度图像、彩色图像及YUV图像)、图片修补、灰度直方图源码实现和彩色直方图源码。重点讨论了灰度直方图均衡化的概念和实现,以及亮度增强、磨皮美白(OpenCV双边滤波)、高斯均值滤波和中值滤波在去除噪声和改善图像质量上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.彩色图片直方图

1.API的方式实现彩色图像直方图
import cv2
import numpy as np
#参数:图片/类型
def ImageHist(image,type):
    #定义颜色为白色
    color = (255,255,255)
    windowName = 'Gray'
    if type == 31:
        #如果type是31,则是蓝色
        color = (255,0,0)
        windowName = 'B Hist'
    elif type == 32:
        #如果type是32,则是绿色
        color = (0,255,0)
    	windowName = 'G Hist'
    elif type == 33:
        #如果type是33,则是红色
        color = (0,0,255)
        windowName = 'R Hist'
    #计算直方图
    #参数:图片;用于计算直方图的通道[0]表示第一个通道;mask模板;直方图的size;[256]表示灰度值;[0.0,255.0]表明直方图中各种像素的值,表示像素从0到255都会遍历一次
    hist = cv2.calcHist([image],[0],None,[256],[0.0,255.0])
    #最小值;最大值;最小值的下标;最大值的下标
    minV,maxV,minL,maxL = cv2.minMaxLoc(hist)#通过minMaxLoc可以获得hist最大值最下值的下标及对应值
    #创建画布
    histImg = np.zeros([256,256,3],np.uint8)
    for h in range(256):
        intenNormal = int(hist[h]*256/maxV)#获取每一个直方图的数据
        cv2.line(histImg,(h,256),(h,256-intenNormal),color)
    cv2.imshow(windowName,histImg)
    return histImg
img = cv2.imread('image0.jpg',1)
channels = cv2.split(img)#将RGB图像分解成 R G B三个颜色通道
for i in range(0,3):
    ImageHist(channels[i],31+i)
cv2.waitKey(0)

在这里插入图片描述

二.直方图均衡化

直方图描述图片像素的统计信息,有横纵坐标,横坐标表示0-255的颜色等级(8位深度),纵坐标表示颜色等级出现的概率。

1.灰度图像直方图均衡化
import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow('src',grey)
dst = cv2.equalizeHist(gray)
cv2.imshow('dst',dst)
cv2.waitKey(0)
2.彩色图像直方图均衡化
import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
cv2.imshow('src',img)
(b,g,r) = cv2.split(img)#将之前的三通道分解成单通道
bH = cv2.equalizeHist(b)#b通道直方图均衡化之后的结果
gH = cv2.equalizeHist(g)#g通道直方图均衡化之后的结果
rH = cv2.equalizeHist(r)#r通道直方图均衡化之后的结果
result = cv2.merge((bH,gH,rH)) #将三通道合成到一起
cv2.imshow('dst',result)
cv2.waitKey(0)

在这里插入图片描述

3.YUV图像均衡化
import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
imgYUV = cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)#以YUA方式读取图片
cv2.imshow('src',img)#展示原图
channelYUV = cv2.split(imgYUV)#分解imgYUV图像(三维)
channelYUV[0] = cv2.equalizeHist(channelYUV[0])#均衡化第一通道
channels = cv2.merge(channelYUV)#合成通道
result = cv2.cvtColor(channels,cv2.COLOR_YCrCb2BGR)
cv2.imshow('dst',result)
cv2.waitKey(0)

三.图片修补

1.制作损坏图片
import cv2
import numpy as np
img = cv2.imread('image0.jpg',1)
for i in range(200,300):
    img[i,200] = (255,255,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值