《数字图像处理》第5次课程作业,1. 彩色图像的直方图均衡化2. 彩色图像的直方图均衡化与饱和度增强

任务

1.读取彩色输入图像,可视化

2.基于直方图均衡化的彩色图像对比度增强: 将输入图像由RGB空间映射至HSV空间,保持H与S通道不变,对亮度通道V进行直方图均衡化,映射回RGB空间,保存并可视化图像;

3. 直方图均衡化+饱和度增强:将输入图像映射至HSV空间,固定H不变;对亮度通道V直方图均衡化;对各像素的S通道增加一个小正数(如0.1, 0.3),并确保增加后不超过1。最后由HSV空间映射回RGB空间,保存并可视化结果。

比较原始输入图像,以及两种处理结果,理解对比度增强以及饱和度增强。

代码

from PIL import Image
from pylab import *
import cv2
import numpy as np
import math
import matplotlib.pyplot as plt


plt.rcParams['font.sans-serif'] = ['SimHei']       # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False         # 解决保存图像是负号'-'显示为方块的问题

img = array(Image.open(r'input.jpg'))
cv2.imshow('a',img)
cv2.waitKey(0)


# 将BGR图像转换到HSV空间中
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 将HSV图像通道分离
channels = cv2.split(hsv)
# 对第1个通道即色调通道进行全局直方图均衡化并保存
cv2.equalizeHist(channels[2],channels[2])
# 将处理后的通道和没有处理的两个通道合并,命名为hsv
cv2.merge(channels,hsv)
# 将HSV图像转换回BGR图像
cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR, img)
cv2.imshow('b',img)
cv2.waitKey(0)


hsv = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2HSV)
h, s, v = cv2.split(hsv)

cv2.equalizeHist(s, s)

s = cv2.add(s, 0.3)
h = cv2.convertScaleAbs(h)
s = cv2.convertScaleAbs(s)
v = cv2.convertScaleAbs(v)

hsv = cv2.merge([h, s, v])
img = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)

cv2.imshow('c', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

结果 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值