【OpenCV 例程300篇】48. 直方图处理之彩色直方图匹配

『youcans 的 OpenCV 例程300篇 - 总目录』


【youcans 的 OpenCV 例程300篇】48. 直方图处理之彩色直方图匹配


图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数。

直方图匹配又称为直方图规定化,是指将图像的直方图调整为规定的形状。 例如,将一幅图像或某一区域的直方图匹配到另一幅影像上,使两幅影像的色调保持一致。

这就需要在直方图均衡的基础上,再进行一次反变换,将均匀形状的直方图调整为规定的形状。

直方图匹配的主要步骤为:

(1)通过规定图像 z 的直方图 pz(z)p_z(z)pz(z),计算其直方图均衡变换的 sks_ksk

(2)通过 sks_ksk 计算图像 z 的直方图均衡变换函数 GGGG(zq)=skG(z_q)=s_kG(zq)=sk

(3)计算变换函数 GGG 的逆变换函数 G−1G^{-1}G1zq=G−1(sk)z_q=G^{-1}(s_k)zq=G1(sk)

(4)对输入图像 r 进行直方图均衡得到均衡图像 s,然后再用逆变换函数 G−1G^{-1}G1 将其映射到 pz(z)p_z(z)pz(z),得到直方图匹配图像 z。本步骤中的两次变换,也可以合并为一次完成。

OpenCV 对于彩色图像的直方图匹配,需要对各个颜色通道分别进行运算。

例程 1.60 通过进行彩色图像的直方图匹配,使初始图像 Gaia 的直方图分布,调整到近似模板图像 Lena 的分布,从而具有 Lena 图像的色彩风格。


例程:1.60 彩色图像直方图匹配

    # 1.60 彩色图像的直方图匹配img = cv2.imread("../images/imgGaia.tif", flags=1)  # flags=1 读取为彩色图像imgRef = cv2.imread("../images/imgLena.tif", flags=1)  # 匹配模板图像 (matching template)_, _, channel = img.shapeimgOut = np.zeros_like(img)for i in range(channel):print(i)histImg, _ = np.histogram(img[:,:,i], 256)  # 计算原始图像直方图histRef, _ = np.histogram(imgRef[:,:,i], 256)  # 计算匹配模板直方图cdfImg = np.cumsum(histImg)  # 计算原始图像累积分布函数 CDFcdfRef = np.cumsum(histRef)  # 计算匹配模板累积分布函数 CDFfor j in range(256):tmp = abs(cdfImg[j] - cdfRef)tmp = tmp.tolist()index = tmp.index(min(tmp))  # find the smallest number in tmp, get the index of this numberimgOut[:,:,i][img[:,:,i]==j] = indexfig = plt.figure(figsize=(10,7))plt.subplot(231), plt.title("Original image"), plt.axis('off')plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))  # 显示原始图像plt.subplot(232), plt.title("Matching template"), plt.axis('off')plt.imshow(cv2.cvtColor(imgRef, cv2.COLOR_BGR2RGB))  # 显示匹配模板plt.subplot(233), plt.title("Matching output"), plt.axis('off')plt.imshow(cv2.cvtColor(imgOut, cv2.COLOR_BGR2RGB))  # 显示匹配结果histImg, bins = np.histogram(img.flatten(), 256)  # 计算原始图像直方图plt.subplot(234, yticks=[]), plt.bar(bins[:-1], histImg)histRef, bins = np.histogram(imgRef.flatten(), 256)  # 计算匹配模板直方图plt.subplot(235, yticks=[]), plt.bar(bins[:-1], histRef)histOut, bins = np.histogram(imgOut.flatten(), 256)  # 计算匹配结果直方图plt.subplot(236, yticks=[]), plt.bar(bins[:-1], histOut)plt.show()

在这里插入图片描述

(本节完)


版权声明:

youcans@xupt 原创作品,转载必须标注原文链接

Copyright 2021 youcans, XUPT

Crated:2021-11-25


欢迎关注 『OpenCV 例程200篇』 系列,持续更新中
欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中

【OpenCV 例程200篇】01. 图像的读取(cv2.imread)
【OpenCV 例程200篇】02. 图像的保存(cv2.imwrite)
【OpenCV 例程200篇】03. 图像的显示(cv2.imshow)
【OpenCV 例程200篇】04. 用 matplotlib 显示图像(plt.imshow)
【OpenCV 例程200篇】05. 图像的属性(np.shape)
【OpenCV 例程200篇】06. 像素的编辑(img.itemset)
【OpenCV 例程200篇】07. 图像的创建(np.zeros)
【OpenCV 例程200篇】08. 图像的复制(np.copy)
【OpenCV 例程200篇】09. 图像的裁剪(cv2.selectROI)
【OpenCV 例程200篇】10. 图像的拼接(np.hstack)
【OpenCV 例程200篇】11. 图像通道的拆分(cv2.split)
【OpenCV 例程200篇】12. 图像通道的合并(cv2.merge)
【OpenCV 例程200篇】13. 图像的加法运算(cv2.add)
【OpenCV 例程200篇】14. 图像与标量相加(cv2.add)
【OpenCV 例程200篇】15. 图像的加权加法(cv2.addWeight)
【OpenCV 例程200篇】16. 不同尺寸的图像加法
【OpenCV 例程200篇】17. 两张图像的渐变切换
【OpenCV 例程200篇】18. 图像的掩模加法
【OpenCV 例程200篇】19. 图像的圆形遮罩
【OpenCV 例程200篇】20. 图像的按位运算
【OpenCV 例程200篇】21. 图像的叠加
【OpenCV 例程200篇】22. 图像添加非中文文字
【OpenCV 例程200篇】23. 图像添加中文文字
【OpenCV 例程200篇】23. 图像添加中文文字
【OpenCV 例程200篇】24. 图像的仿射变换
【OpenCV 例程200篇】25. 图像的平移
【OpenCV 例程200篇】26. 图像的旋转(以原点为中心)
【OpenCV 例程200篇】27. 图像的旋转(以任意点为中心)
【OpenCV 例程200篇】28. 图像的旋转(直角旋转)
【OpenCV 例程200篇】29. 图像的翻转(cv2.flip)
【OpenCV 例程200篇】30. 图像的缩放(cv2.resize)
【OpenCV 例程200篇】31. 图像金字塔(cv2.pyrDown)
【OpenCV 例程200篇】32. 图像的扭变(错切)
【OpenCV 例程200篇】33. 图像的复合变换
【OpenCV 例程200篇】34. 图像的投影变换
【OpenCV 例程200篇】35. 图像的投影变换(边界填充)
【OpenCV 例程200篇】36. 直角坐标与极坐标的转换
【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理
【OpenCV 例程200篇】38. 图像的反色变换(图像反转)
【OpenCV 例程200篇】39. 图像灰度的线性变换
【OpenCV 例程200篇】40. 图像分段线性灰度变换
【OpenCV 例程200篇】41. 图像的灰度变换(灰度级分层)
【OpenCV 例程200篇】42. 图像的灰度变换(比特平面分层)
【OpenCV 例程200篇】43. 图像的灰度变换(对数变换)
【OpenCV 例程200篇】44. 图像的灰度变换(伽马变换)
【OpenCV 例程200篇】45. 图像的灰度直方图
【OpenCV 例程200篇】46. 直方图均衡化
【OpenCV 例程200篇】47. 图像增强—直方图匹配
【OpenCV 例程200篇】48. 图像增强—彩色直方图匹配
【OpenCV 例程200篇】49. 图像增强—局部直方图处理
【OpenCV 例程200篇】50. 图像增强—直方图统计量图像增强
【OpenCV 例程200篇】51. 图像增强—直方图反向追踪
【OpenCV 例程200篇】52. 图像的相关与卷积运算
【OpenCV 例程200篇】53. Scipy 实现图像二维卷积
【OpenCV 例程200篇】54. OpenCV 实现图像二维卷积
【OpenCV 例程200篇】55. 可分离卷积核
【OpenCV 例程200篇】56. 低通盒式滤波器
【OpenCV 例程200篇】57. 低通高斯滤波器
【OpenCV 例程200篇】58. 非线性滤波—中值滤波
【OpenCV 例程200篇】59. 非线性滤波—双边滤波
【OpenCV 例程200篇】60. 非线性滤波—联合双边滤波
【OpenCV 例程200篇】61. 导向滤波(Guided filter)
【OpenCV 例程200篇】62. 图像锐化——钝化掩蔽
【OpenCV 例程200篇】63. 图像锐化——Laplacian 算子
【OpenCV 例程200篇】64. 图像锐化——Sobel 算子
【OpenCV 例程200篇】65. 图像锐化——Scharr 算子
【OpenCV 例程200篇】66. 图像滤波之低通/高通/带阻/带通
【OpenCV 例程200篇】67. 空间域图像增强的综合应用
【OpenCV 例程200篇】68. 空间域图像增强的综合应用
【OpenCV 例程200篇】69. 连续非周期信号的傅立叶系数
【OpenCV 例程200篇】70. 一维连续函数的傅里叶变换
【OpenCV 例程200篇】71. 连续函数的取样
【OpenCV 例程200篇】72. 一维离散傅里叶变换
【OpenCV 例程200篇】73. 二维连续傅里叶变换
【OpenCV 例程200篇】74. 图像的抗混叠
【OpenCV 例程200篇】75. Numpy 实现图像傅里叶变换
【OpenCV 例程200篇】76. OpenCV 实现图像傅里叶变换
【OpenCV 例程200篇】77. OpenCV 实现快速傅里叶变换
【OpenCV 例程200篇】78. 频率域图像滤波基础
【OpenCV 例程200篇】79. 频率域图像滤波的基本步骤
【OpenCV 例程200篇】80. 频率域图像滤波详细步骤
【OpenCV 例程200篇】81. 频率域高斯低通滤波器
【OpenCV 例程200篇】82. 频率域巴特沃斯低通滤波器
【OpenCV 例程200篇】83. 频率域低通滤波:印刷文本字符修复
【OpenCV 例程200篇】84. 由低通滤波器得到高通滤波器
【OpenCV 例程200篇】85. 频率域高通滤波器的应用
【OpenCV 例程200篇】86. 频率域滤波应用:指纹图像处理
【OpenCV 例程200篇】87. 频率域钝化掩蔽
【OpenCV 例程200篇】88. 频率域拉普拉斯高通滤波
【OpenCV 例程200篇】89. 带阻滤波器的传递函数
【OpenCV 例程200篇】90. 频率域陷波滤波器
【OpenCV 例程200篇】91. 高斯噪声、瑞利噪声、爱尔兰噪声
【OpenCV 例程200篇】92. 指数噪声、均匀噪声、椒盐噪声
【OpenCV 例程200篇】93. 噪声模型的直方图
【OpenCV 例程200篇】94. 算术平均滤波器
【OpenCV 例程200篇】95. 几何均值滤波器
【OpenCV 例程200篇】96. 谐波平均滤波器
【OpenCV 例程200篇】97. 反谐波平均滤波器
【OpenCV 例程200篇】98. 统计排序滤波器
【OpenCV 例程200篇】99. 修正阿尔法均值滤波器
【OpenCV 例程200篇】100. 自适应局部降噪滤波器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/565950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue的安装和配置

Vue是目前最流行的前端框架之一,给大家讲一下如何安装和配置Vue环境。 网上也有许多关于安装和配置Vue的教程,但是他们的方法太过于麻烦了,而且对于初学者来说对网上的一些安装和配置Vue的方法不理解,看了之后还是没有一点思绪&a…

【OpenCV 例程300篇】49. 直方图处理之局部直方图处理(cv2.createCLAHE)

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】49. 直方图处理之局部直方图处理(cv2.createCLAHE) 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素…

ResNet网络详解与keras实现

ResNet网络详解与keras实现 ResNet网络详解与keras实现Resnet网络的概览Pascal_VOC数据集第一层目录第二层目录第三层目录 梯度退化Residual LearningIdentity vs Projection ShortcutsBottleneck architectureResnet网络构建表ResNet论文结果为了搭建Resnet网络我们使用了以下…

简易计算器

用JavaScript实现简易计算器 先看效果图 计算加法弹框输出计算结果 程序解读&#xff1a; 1.两个输入框和一个下拉框 2. 弹框显示结果 3. 加减乘除的简单运算 代码演示 Html页面内容 <!DOCTYPE html> <html><head><meta charset"utf-8">…

【OpenCV 例程300篇】50. 直方图处理之直方图统计量图像增强

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】50. 直方图处理之直方图统计量图像增强 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数&#xff0c;用来描述每个灰度级在图像矩阵中的像素个数。 直方图统计量图像增强&…

在大数据时代下金融风控的分类

Date&#xff1a;2018-05-24 Author&#xff1a;等等 依托城市数据湖海量数据资源&#xff0c;尤其是在信贷领域对企业或者个人的个人信贷画像描述评判准则已经是第三方房贷企业或者银行对借贷人的评分标准。风控建模以数据价值挖掘为导向&#xff0c;吸纳大量数据、人工智能科…

多功能标准型计算器

实现一个标准型计算器及其各项功能的实现 效果图欣赏 是不是看起来很漂亮的呢&#xff1f;&#xff1f;&#xff1f; 功能详解&#xff1a; 屏幕显示输入的数字和符号实现加减乘除运算回退和清零功能小数的运算结果的输出 相信小伙伴们都已经迫不及待的想要知道源码了。 代…

【OpenCV 例程200篇】51. 直方图处理之直方图反向追踪(cv2.calcBackProject)

『youcans 的 OpenCV 例程300篇 - 总目录』 【OpenCV 例程200篇】51. 直方图处理之直方图反向追踪&#xff08;cv2.calcBackProject&#xff09; 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数&#xff0c;用来描述每个灰度级在图像矩阵中的像素个数。…

【转需】【金融干货】四步教你:开发风控模型?

一、市场调研 目前市面主流的风控模型 1、互联网金融前10名排行榜(数据截止日期2017-09-12) 互联网金融公司排名分别是蚂蚁金服、陆金所、京东金融、苏宁金融、百度金融、腾讯理财通、宜信、钱大掌柜、万达金融和网易理财。 1.1 蚂蚁金服 1.1.1 大数据技术对接第三方征信公司芝…

推箱子

推箱子小游戏原理的实现 功能分析&#xff1a; 1.找一张类似于箱子的图片自行设置图片的大小 2.设置控制箱子移动的四个方向的按钮 3.使用键盘控制图片上下左右的移动、 效果图演示 原始位置 点击键盘向右移动三次向下移动一次后的位置 看了上述过程是不是感觉很有意思呀&…

java web 开发之写在前面(0)

java是sun公司&#xff08;现在属于Oracle公司&#xff09;推出的能够跨越多平台的、可以执行最高的一种面向对象的编程语言&#xff0c;也是目前最先进、特征最丰富、功能最强大的计算机语言。利用java可以编写桌面应用程序&#xff0c;web应用程序、分布式系统、嵌入式系统程…

【OpenCV 例程200篇】52. 图像的相关与卷积运算

【OpenCV 例程200篇】52. 图像的相关与卷积运算 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 滤波通常是指对图像中特定频率的分量进行过滤或抑制。图像滤波是在尽可能保留图像细节特征的条件…

java web 之 网页前端开发基础(1)

1.HTML&#xff08;Hypertext Markup Language&#xff0c;HTML&#xff0c;超文本标记语言&#xff09; 1.1 创建第一个HTML文件 编写html语言可以通过两种方式&#xff0c;一种是手工编写html代码&#xff0c;一种是借助一些开发软件&#xff0c;如Dreamweaver或者微软公司…

文本框为空按钮不可点击

在form表单的提交中判断输入框的内容是否为空&#xff0c;如果输入框的内容为空则按钮不可点击&#xff0c;只有当输入框的内容不为空时才能点击并执行之后的提交等操作。 效果图演示 输入框为空&#xff08;按钮不可点击&#xff0c;点击无效果&#xff09; 输入框不为空时…

【youcans 的 OpenCV 学习课】7. 空间域图像滤波

专栏地址&#xff1a;『youcans 的图像处理学习课』 文章目录&#xff1a;『youcans 的图像处理学习课 - 总目录』 【youcans 的 OpenCV 学习课】7. 空间域图像滤波 图像滤波是在尽可能保留图像细节特征的条件下对目标图像的噪声进行抑制&#xff0c;是常用的图像预处理操作。 …

java web开发之上机指导(2)

创建一个用户注册的页面&#xff0c;让用户输入姓名、密码、电话和邮箱&#xff0c;使用javascript脚本完成密码校验、电话号码校验、邮箱校验和空格内容校验。 开发步骤如下。 &#xff08;1&#xff09;创建一个项目名为CheckInfomation&#xff0c;在WebContent文件夹下创…

小程序开发之基础知识(0)

前言&#xff1a;2016年9月21日,微信小程序正式开启内测。 2017年1月9日0点,万众瞩目的微信第一批小程序正式上线,用户可以体验到各种各样小程序提供的服务。 人类发展史大抵经历了石器时代&#xff0c;青铜器与铁器时代、工业与科技时代&#xff08;从第一次工业革命算起&…

鼠标悬浮改变背景颜色

将鼠标放在div上时div的背景颜色发生改变&#xff0c;把鼠标移走div之后&#xff0c;div的背景颜色回复原来的颜色。 效果图演示 没有将鼠标放在div上时&#xff08;lanse&#xff09; 将鼠标放在div上之后&#xff08;变为红色&#xff09; 下面看代码 由于代码较短&…

获取焦点改变输入框背景色

当输入框获取焦点时&#xff08;鼠标点到输入框时&#xff09;为红色&#xff0c;失去焦点时还原&#xff08;鼠标未点输入框内&#xff09;为白色。 效果图演示 没有获取焦点 获取焦点 代码演示 <!DOCTYPE html> <html><head lang"en"><…

【OpenCV 例程200篇】53. Scipy 实现图像二维卷积

【OpenCV 例程200篇】53. Scipy 实现图像二维卷积 欢迎关注 『OpenCV 例程200篇』 系列&#xff0c;持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列&#xff0c;持续更新中 滤波通常是指对图像中特定频率的分量进行过滤或抑制。图像滤波是在尽可能保留图像细节特征的条…