Python3与OpenCV3.3 图像处理(十二)--图像直方图应用
2017-12-05 23:30
786 查看
一、调节对比度
从图中的可以看出来,图一比较模糊,经过全图的直方图均衡化后,图片变得清晰了(图二),但是图片明显的对比度偏高,利用局部直方图均衡化后(图三),图片看起来就比较舒服了
注意:1、全图的直方图均衡化会导致对比度过度增强,所以在一些情况下应使用局部直方图均衡化;
2、opencv中直方图均衡化都是基于灰度图像的
图一
图二
图三
二、对比图片相似度
import cv2 as cv def equalHist(image): """直方图均衡化,图像增强的一个方法""" #彩色图片转换为灰度图片 gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY) #直方图均衡化,自动调整图像的对比度,让图像变得清晰 dst=cv.equalizeHist(gray) cv.imshow("equalHist",dst) def clahe(image): """ 局部直方图均衡化 把整个图像分成许多小块(比如按8*8作为一个小块), 那么对每个小块进行均衡化。 这种方法主要对于图像直方图不是那么单一的(比如存在多峰情况)图像比较实用 """ # 彩色图片转换为灰度图片 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) #cliplimit:灰度值 #tilegridsize:图像切割成块,每块的大小 clahe = cv.createCLAHE(clipLimit=2.0,tileGridSize=(8,8)) dst=clahe.apply(gray) cv.imshow("clahe", dst) src=cv.imread('test1.jpg') #图一 cv.imshow("yt", gray) #图二 equalHist(src) #图三 clahe(src)
从图中的可以看出来,图一比较模糊,经过全图的直方图均衡化后,图片变得清晰了(图二),但是图片明显的对比度偏高,利用局部直方图均衡化后(图三),图片看起来就比较舒服了
注意:1、全图的直方图均衡化会导致对比度过度增强,所以在一些情况下应使用局部直方图均衡化;
2、opencv中直方图均衡化都是基于灰度图像的
图一
图二
图三
二、对比图片相似度
import cv2 as cv import numpy as np def create_rgb_hist(image): """创建rgb 三通道直方图""" h,w,c=image.shape rgbHist=np.zeros([16*16*16,1],np.float32) bsize=256/16 for row in range(h): for col in range(w): b = image[row,col,0] g = image[row, col, 1] r = image[row, col, 2] index=np.int(b/bsize)*16*16+np.int(g/bsize)*16+np.int(r/bsize) rgbHist[np.int(index),0]=rgbHist[np.int(index),0]+1 return rgbHist def hist_compare(image1,image2): hist1=create_rgb_hist(image1) hist2=create_rgb_hist(image2) #巴氏距离比较,距离越小越相似 match1=cv.compareHist(hist1,hist2,cv.HISTCMP_BHATTACHARYYA) #相关性比较,相关性越大越相似 match2=cv.compareHist(hist1,hist2,cv.HISTCMP_CORREL) # 卡方比较,越大越不相似 match3 = cv.compareHist(hist1, hist2, cv.HISTCMP_CHISQR) print("巴氏距离:%s 相关性:%s 卡方:%s"%(match1,match2,match3)) hist_compare(cv.imread('test1.jpg'),cv.imread('textImg.jpg'))
相关文章推荐
- Python3与OpenCV3.3 图像处理(十一)--图像直方图
- Python-OpenCV 处理图像(四):图像直方图和反向投影
- Python3与OpenCV3.3 图像处理(八)--模糊
- Python3与OpenCV3.3 图像处理(九)--高斯模糊
- Python3与OpenCV3.3 图像处理(六)--ROI
- 【opencv+python】图像处理之二、几何变换(仿射与投影)的应用
- Python3与OpenCV3.3 图像处理(补)--第三节补充
- Python3与OpenCV3.3 图像处理(七)--洪填充
- Python3与OpenCV3.3 图像处理(五)--图像运算
- 【opencv+python】图像处理之二、几何变换(仿射与投影)的应用
- Python3与OpenCV3.3 图像处理(二十五)--开闭操作(补充)
- Python3与OpenCV3.3 图像处理(二十二)--对象测量(纯代码)
- Python3与OpenCV3.3 图像处理(二十四)--开闭操作
- Python3与OpenCV3.3 图像处理(二)--图像基本操作
- Python OpenCV处理图像之图像直方图和反向投影
- Python3与OpenCV3.3 图像处理(十九)--直线检测
- Python3与OpenCV3.3 图像处理(二十六)--分水岭算法(纯代码)
- Python3与OpenCV3.3 图像处理(二十一)--轮廓发现
- Python3与OpenCV3.3 图像处理(三)--Numpy数组操作
- Python3与OpenCV3.3 图像处理(十七)--图像梯度