前提条件
使用工具python3.x 使用库 :numpy、opencv,
api简介
1.cv.equalizeHist 使用cv.cvtColor(image, cv.COLOR_BGR2GRAY)将图片转为gray,以gray为参数,使用cv.equalizeHist(gray)可以得到对比度更强的图。
2.cv.createCLAHE 自动化直方图,主要是对图片进行局部直方化,对比强度与原图差别不大,显得更自然。 3.cv测试数据pareHist 利用图像的直方图,分析图片的相似性。cv2测试数据pareHist(H1, H2, Methods) H1,H2 为图片转换后的直方图,Methods是比较方式
关于图片直方化,原理及用处等可参考这里 https://baike.baidu测试数据/item/%E7%9B%B4%E6%96%B9%E5%9B%BE%E5%9D%87%E8%A1%A1%E5%8C%96?fr=aladdin
代码示例
import?cv2?as?cvimport?numpy?as?np#直方图均衡化?equalHist_demo?clahe_demodef?equalHist_demo(image):?#直方图均衡化,对比度增强 gray?=?cv.cvtColor(image,?cv.COLOR_BGR2GRAY) dst?=?cv.equalizeHist(gray)?#用gray cv.imshow('equalHist_demo',?dst)def?clahe_demo(image): gray?=?cv.cvtColor(image,?cv.COLOR_BGR2GRAY) clahe?=?cv.createCLAHE(clipLimit=5.0,?tileGridSize=(8,?8)) dst?=?clahe.apply(gray) cv.imshow('clahe_demo',dst)#直方图比较def?create_rgb_hist(image): 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): #构造?r?g?b?通道 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测试数据pareHist(hist1,?hist2,?cv.HISTCMP_BHATTACHARYYA) match2?=?cv测试数据pareHist(hist1,?hist2,?cv.HISTCMP_CORREL) match3?=?cv测试数据pareHist(hist1,?hist2,?cv.HISTCMP_CHISQR) print("巴氏距离:?%s,?相关性:%s,?卡方:%s"?%(match1,?match2,?match3)) #巴氏距离:很小,很相似。相关性:越接近一越相似。卡方:越小相似度越高src=cv.imread("D:/openCV_image/image/6.png")#?src=cv.imread("D:/openCV_image/image/2_2.png")#?print(src)#?cv.namedWindow("input?image",cv.WINDOW_AUTOSIZE)#?cv.imshow("input?image",src)#?equalHist_demo(src)#?clahe_demo(src)image1=cv.imread("D:/openCV_image/image/2_2.png")image2=cv.imread("D:/openCV_image/image/7.png")cv.imshow("input1",image1)cv.imshow("input?image2",image2)hist_compare(image1,?image2)?#图片相似性分析cv.waitKey(0)cv.destroyAllWindows()
原图:
1.直方图均衡化效果比较:
clahe_demo(src) equalHist_demo(src)
2.hist_compare的效果:
由巴氏距离可知图片相似性很低
查看更多关于Python opencv(十) 图像直方图的应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did126314