Python计算机视觉(⼋)——OpenCV进⾏图像增强
参考的⼀些⽂章以及论⽂我都会给⼤家分享出来 —— ⽂章链接就贴在原⽂,论⽂我上传到资源中去,⼤家可以免费下载学习,如果当天资源区不到论⽂,那就等等,可能正在审核,审核完后就可以下载了。⼤家⼀起学习,⼀起进步!加油!!
⽬录
1. 图像增强
此处参考论⽂:《直⽅图均衡化在图像处理中的应⽤_任斐艳》
(1)基本概念
图像增强是图像处理的最基本⼿段, 它往住是各种图像分析与处理时的预处理过程。图像增强就是增强图像中⽤户感兴趣的信息, 其主要⽬的有两个: ⼀是改善图像的视觉效果, 提⾼图像成分的清晰度; ⼆是使图像变得更有利于计算机处理。图像增强⽅法⼀般分为空间域和变换域两⼤类
(2)空间域
空间域⽅法直接对图像像素的灰度进⾏处理。在空间域内对图像进⾏点运算, 它是⼀种既简单⼜重要的图像处理技术, 它能让⽤户改变图像上像素点的灰度值, 这样通过点运算处理将产⽣⼀幅新图像
(3)变换域
变换域⽅法是指在图像的某个变换域中对变换系数进⾏处理, 然后通过逆变换获得增强图像。对于这个变换域的理解,可以了解⼀下信号的傅⾥叶变换,将信号转化到频域内进⾏观察分析
2. 直⽅图均衡化
(1)基本概念
图像直⽅图
此处可以参考我之前的⽂章:
简单来说,直⽅图描述了图像像素点中某⼀个灰度值出现的概率,⼀幅图像的直⽅图是确定不变的,但不同的两幅图像的直⽅图可能相同
直⽅图均衡化
此处参考:《基于直⽅图均衡的图像增强_李耀辉》
图像直⽅图反映了不同灰度值的像素的⾯积 (连续图像)或像素个数 (离散图像)在⼀帧中的⽐例,反映了图像的某些信息,直⽅图均衡就是把⼀幅已知灰度概率分布的图像经过⼀种变换使之变成具有均匀概率分布的图像从⽽使信息嫡达到最⼤,(简单来说就是将图像的灰度图变得近似均匀分布,让其各种灰度级的像素点分布较为均匀)
(2)直⽅图均衡化实现
获取原图信息
⾸先第⼀步永远是经典的读取图像信息:
"""
Author:XiaoMa
date:2021/10/25
"""
import cv2
import matplotlib.pyplot as plt
#读取图像信息
img0 = cv2.imread('E:\From Zhihu\For the desk\cveight1.jpg')
img1 = size(img0, dsize = None, fx = 0.5, fy = 0.5)
h, w = img1.shape[:2]
print(h, w)
img2 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
cv2.namedWindow("W0")
cv2.imshow("W0", img1)
cv2.waitKey(delay = 0)
获得图像信息:
540 540
局部直方图均衡化得到的原图如上,显得不是很清晰,就像蒙了⼀层雾⼀样,所以我们要对其进⾏图像增强,让它变得清晰⼀点,让我们能更好的欣赏美⼥
绘制直⽅图
这个在前⾯的⽂章中已经介绍过了:
#绘制直⽅图
hist0 = cv2.calcHist([img2], [0], None, [256], [0, 255])
plt.plot(hist0, label = "灰度图直⽅图", linestyle = "--", color = 'g')
plt.legend()  #增加图例
plt.savefig("E:\From Zhihu\For the desk\cveight0.jpg")  #保存直⽅图
plt.show()
得到的直⽅图如下:
可以看出来这幅图的像素点很少有那种亮度特别⾼的,⼤多数分布在灰度级数较低和中等的灰度级别处 ,所以这副图像整体⾊调是较为暗沉的(这⾥是对灰度图画的直⽅图,并不是原图哈)
直⽅图均衡化
直⽅图均衡化使⽤的函数是:cv2.equalizeHist()
OpenCV官⽹给出的解释:OpenCV has a function to do this(this 代表直⽅图均衡化), cv2.equalizeHist() . Its input is just grayscale image and output is our histogram equalized image.
该函数输⼊⼀幅灰度图像,输出即为经过直⽅图均衡化后的图像
我们使⽤该函数进⾏直⽅图的均衡化:
img3 = cv2.equalizeHist(img2) #直⽅图均衡化
cv2.namedWindow("W1")
cv2.imshow("W1", img3)
cv2.waitKey(delay = 0)
不管效果如何,我们先把结果放出来:
可以看出来图⽚的效果并没有增强,好像变得更差了
再把它的直⽅图画出来,和原灰度图的直⽅图进⾏对⽐
代码都在上⼀篇⽂章中解释过了,有不懂的地⽅可以去上⼀篇查或者评论区⼤家讨论也⾏
#绘制均衡化后的直⽅图
#绘制直⽅图
hist0 = cv2.calcHist([img2], [0], None, [256], [0, 255])
hist1 = cv2.calcHist([img3], [0], None, [256], [0, 255])
plt.subplot(2,1,1)
plt.plot(hist0, label = "灰度图直⽅图", linestyle = "--", color = 'g')
plt.legend()
plt.subplot(2,1,2)
plt.plot(hist1, label = "均衡化后的直⽅图", linestyle = "--", color = 'r')
plt.legend()
plt.savefig("E:\From Zhihu\For the desk\cveight0.jpg")
plt.show()
可以看出来均衡的效果还是有的,只是对于这副图像来说直⽅图均衡化的图像增强效果不太明显多换⼏幅图试⼀下(W0是原灰度图,W1是直⽅图均衡化后的灰度图):

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。