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

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


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


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

直方图均衡直接对图像全局进行均衡化,生成具有均匀直方图的图像,并不考虑局部图像区域的具体情况。对于一幅图像的局部区域、具体缺陷,有时需要生成具有特殊形状直方图的图像。

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

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

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

(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。本步骤中的两次变换,也可以合并为一次完成。


例程:1.59 灰度图像直方图匹配

    # 1.59 灰度图像直方图匹配img = cv2.imread("../images/imgGaia.tif", flags=0)  # flags=0 读取为灰度图像imgRef = cv2.imread("../images/Fig0307a.tif", flags=0)  # 匹配模板图像, matching template# imgOut = calcHistMatch(img, imgRef)  # 子程序:直方图匹配# 计算累计直方图histImg, bins = np.histogram(img.flatten(), 256)  # 计算原始图像直方图histRef, bins = np.histogram(imgRef.flatten(), 256)  # 计算匹配模板直方图cdfImg = histImg.cumsum()  # 计算原始图像累积分布函数 CDFcdfRef = histRef.cumsum()  # 计算匹配模板累积分布函数 CDF# 计算直方图匹配转换函数transM = np.zeros(256)for i in range(256):index = 0vMin = np.fabs(cdfImg[i] - cdfRef[0])for j in range(256):diff = np.fabs(cdfImg[i] - cdfRef[j])if (diff < vMin):index = int(j)vMin = difftransM[i] = index# 直方图匹配# imgOut = np.zeros_like(img)imgOut = transM[img].astype(np.uint8)fig = plt.figure(figsize=(10,7))plt.subplot(231), plt.title("Original image"), plt.axis('off')plt.imshow(img, cmap='gray')  # 原始图像plt.subplot(232), plt.title("Matching template"), plt.axis('off')plt.imshow(imgRef, cmap='gray')  # 匹配模板plt.subplot(233), plt.title("Matching output"), plt.axis('off')plt.imshow(imgOut, cmap='gray')  # 匹配结果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 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/125112487)
Copyright 2022 youcans, XUPT
Crated:2021-11-18

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

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

相关文章

lingo入门(数据部分)

lingo入门(数据部分) 在数据部分也可以指定一些标量变量&#xff08;scalar variables&#xff09;。当一个标量变量在数据部 分确定时&#xff0c;称之为参数。 data: interest_rate .085; enddata还可以指定几个参数data: interest_rate,inflation_rate .085 .03; enddata如…

我的Go+语言初体验——(1)超详细安装教程

我的Go语言初体验——&#xff08;1&#xff09;超详细安装教程 “我的Go语言初体验” | 征文活动进行中… Go 是什么&#xff1f;为数据而生&#xff0c;实现教学、工程与数据的 “三位一体”。 Go 语言的安装和环境配置有些复杂&#xff0c;官方教程也没有写的很详细。 本文…

JAVA增删查改的实现

java程序对SQLServer数据库的数据进行增删查的操作&#xff0c;结果在控制台输出 步骤详解&#xff1a; 设计并实现数据库在数据库中插入相应的数据链接SQLServer数据库实现对数据库的查增删等功能 数据库内容效果图 下面讲述JAVA代码 目录结构 1 . 数据库链接&#xff…

Mac下配置sublime实现LaTeX

在Mac上通过Sublime、Skim编辑LaTeX Sublime Text是一款非常优秀的编辑器&#xff0c;速度快&#xff0c;界面简洁&#xff0c;插件众多。并且能跨平台使用&#xff0c;在Mac和Windows上都能完美使用。虽然是一款付费软件&#xff0c;但作者很厚道地给了无限期的试用期限。这一…

我的Go+语言初体验——(2)IDE 详细安装教程

我的Go语言初体验——&#xff08;2&#xff09;IDE 详细安装教程 “我的Go语言初体验” | 征文活动进行中… Go 语言的安装和环境配置有些复杂&#xff0c;官方教程也没有写的很详细。 通过控制台编写和运行 Go 程序很不方便。本文从零开始&#xff0c;详细介绍 Go 集成开发环…

GoogleNet网络详解与keras实现

GoogleNet网络详解与keras实现 GoogleNet网络详解与keras实现GoogleNet系列网络的概览Pascal_VOC数据集第一层目录第二层目录第三层目录 InceptionV1模块介绍Inception的架构GoogleNet的图片Keras代码实现为了搭建Inception网络我们使用了以下策略整个代码的流程如下 实验结果实…

循环输出

使用foreach循环输出List中的数据 步骤详解&#xff1a; 1.数据库的设计和实现 2. Java代码的书写 3. jsp页面的显示 效果图展示 数据库数据 查询结果的显示 功能分析&#xff1a; 链接数据库查找数据库内容把这些内容放入List数组里面用session传递jsp页面获取session内…

我的Go+语言初体验——(4)零基础学习 Go+ 爬虫

我的Go语言初体验——&#xff08;4&#xff09;零基础学习 Go 爬虫 “我的Go语言初体验” | 征文活动进行中… Go 语言非常适合编写爬虫程序&#xff0c;具有并发机制完善、并发数量大、占用资源少、运行速度快、部署方便的优点。 本文结合官方文档与 Go 语言的资料&#xff…

latex的基本使用

LaTeX使用 LaTeX使用基本使用源文件的基本结构中文处理办法字体字号设置文章基本结构特殊字符处理图片的使用表格的使用Texstduio的导入表格功能会更快浮动体的使用数学公式初步矩阵的使用TexStudio里面的矩阵模板功能参考文献使用BibTex定义自己的命令 基本使用 sublime使用…

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

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程300篇】48. 直方图处理之彩色直方图匹配 图像直方图是反映图像像素分布的统计表。 灰度直方图是图像灰度级的函数&#xff0c;用来描述每个灰度级在图像矩阵中的像素个数。 直方图匹配又称为直方图规定化&a…

Vue的安装和配置

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

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

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

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.使用键盘控制图片上下左右的移动、 效果图演示 原始位置 点击键盘向右移动三次向下移动一次后的位置 看了上述过程是不是感觉很有意思呀&…