图像直方图均衡化和空间滤波
直方图均衡化和空间滤波
- 直方图均衡化和空间滤波
- 1习题
- 1 直方图均衡化
- 2 空间滤波
- 2编程题
- 1直方图均衡化
- 2空间滤波
- 1习题
1习题
1.1 直方图均衡化
假设你对一张图已经进行了一次直方图均衡化的操作。如果对这张图进行第二次直方图均衡化,得到的结果跟第一次均衡化的结果一样吗?请给予证明。
直方图均衡化处理是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布,就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。它的基本思想是对图像中像素个数多的灰度级进行展宽,而对图像中像素个数少的灰度进行压缩,从而扩展像原取值的动态范围。
L为图像灰度级, Pr(rj) P_r(r_j)表示原始灰度值 rj r_j对应出现的概率,直方图均衡化公式:
s_k=T( r_k )=(L - 1)\sum_{j=0}^{k}P_r( r_j)
=\frac{(L-1)}{MN}\sum_{j=0}^{k}n_j
k=0,1,2...,L-1
rj r_j对应的像素灰度经过直方图均衡化后变为 sk s_k,所以变的是对应的灰度级,而对应灰度级的累积分布概率积分CDF不变,让 Ps(rj) P_s(r_j)表示直方图均衡化后灰度值 rj r_j对应出现的概率,则有;
\sum_{j=0}^{k}P_r(r_j)=\sum_{j=0}^{k}P_s(r_j)
k=0,1,2,,⋯,L−1
所以由直方图均衡化变化的原理可以得出结论,对图片第二次直方图均衡化之后的变换函数跟第一次直方图均衡化结果一样,直方图均衡化结果也相同。
1.2 空间滤波
给定一张 4 x 4 的灰度图和一个 3 x 3 的滤波器:
图像:
\begin{bmatrix} 85& 13 &20 &80 \\ 169 & 8 &243 & 20\\ 18& 155 & 163 &44 \\ 12 & 34& 50& 80 \end{bmatrix}
滤波器:
\begin{bmatrix} 1 & 1&1 \\ 0 & 0 & 0\\ -1& -1&-1 \end{bmatrix}
- 用给定的滤波器对这张灰度图(边界补零)进行卷积,写出卷积后的结果(大小应为 4 x
4)。
\begin{bmatrix}177& 420& 271&263 \\ 75 & 218 & 249 &107 \\ -131 &-324 &-107 &-133 \\ -173& -336 & -362 &-207 \end{bmatrix}
- 请说出你得到的卷积结果中正数和负数分别表示什么含义。
正数表示从垂直方向由上往下灰度值递减,负数表示从垂直方向由上往下灰度值递曾,即看绝对值。
- 根据你所学到的知识, 谈一谈题目中给出的 3 x 3 滤波器可以有哪些应用。
可做水平匹配滤波边缘检测
2编程题
2.1直方图均衡化
- 计算并显示图像的直方图, 并把结果粘贴到报告里。注意:你必须用你自己实现的函数
来计算直方图,但是允许调用现成的 API 来显示直方图。 (例如,你不能调用 Matlab 的“imhist”
来计算直方图,但是可以调用“subplot” , “hist”来显示直方图。 )
进行直方图均衡化,将均衡化后的结果和相应的直方图粘贴到报告里。
- 分析直方图均衡化后的结果,字数不能超过一页。
直方图均衡化处理之后,原来比较少像素的灰度会被分配到别的灰度去,像素相对集中, 处理后灰度范围变大,对比度变大,清晰度变大,所以能有效增强图像。
原图中灰度强的点比较多,所以直方图均衡化后,分布在灰度弱的点也比较多。
3.详细描述你是如何实现直方图均衡化操作的,也就是说,针对“equalize_hist”函数进
行算法说明,字数不能超过两页。请集中在算法描述方面,不要过多地复制/粘贴代码到报告上。
直方图均衡化遵循上面的公式
\frac{(L-1)}{MN}\sum_{j=0}^{k}n_j
先计算出图像中每个的的灰度级的点数,然后求CDF,在将原来点灰度级别重新分配。
直方图均衡化主要代码
double k = (double)255 / (double)(height * width);double[] c = new double[256];c[0] = k * array[0];for (int i = 1; i < 256; i++) {c[i] = c[i - 1] + k * array[i];}
2.2空间滤波
- 分别用 3 x 3, 7 x 7 和 11 x 11 的均值滤波器来平滑你输入的图像,将相应的三个输出结
果粘贴到报告里。
3×3
7×7
11×11
2.用 3 x 3 的拉普拉斯滤波器来锐化你输入的图像(课本上有 4 种拉普拉斯滤波器,参见图
3.37, 你可以使用其中任意一种),并将输出结果放在报告中。除此之外,请简单介绍一下为什
么拉普拉斯滤波器可以用于图像的锐化。
使用矩阵进行拉普拉斯变换
\begin{bmatrix}0& 1& 0\\ 1& -4& 1\\ 0& 1& 0 \end{bmatrix}
实验结果:
拉普拉斯锐化图像是根据图像某个像素的周围像素到此像素的突变程度有关,也就是说它的依据是图像像素的变化程度。我们知道,一个函数的一阶微分描述了函数图像是朝哪里变化的,即增长或者降低;而二阶微分描述的则是图像变化的速度,急剧增长下降还是平缓的增长下降。
当邻域中心像素灰度低于它所在的领域内其它像素的平均灰度时,此中心像素的灰度应被进一步降低,当邻域中心像素灰度高于它所在的邻域内其它像素的平均灰度时,此中心像素的灰度应被进一步提高,以此实现图像的锐化处理。
3.将高提升滤波(high-boost filter) 用在输入的图像中 (也就是说, g(x,y)=f(x,y)+k∗gmax(x,y) g(x,y)=f(x,y)+k*g_max(x,y)其他细节参见课本式(3.6-9))。过程中涉及的平滑部分应用用课本图 3.32(a)所示的滤波器来完成。请自行选择合适的 k(式(3.6-9)中的权值)。在报告中,你需要说明你选择的 k的值,并贴上对应的输出结果。
我们选择k=2
实验结果:
- 详细描述你是如何实现空间滤波操作的,也就是说,针对“filter2d”函数进行算法说
明,字数不能超过两页。
g(x,y)=\sum_{s=-a}^{a}\sum_{t=-b}^{b}w(s,t)w(s,t)f(x+s,y+t)
用滤波矩阵对图像矩阵进行卷积操作,滤波变换原图像的点数不变,控制好边缘的点对应相乘相加。
关键代码:
public int[][] getFilteringArray(int[][] imageArray, int[][] filteringArray) {int height = imageArray.length, width = imageArray[0].length;int[][] temp = new int[height][width];for (int i = 0; i < height; i++) {for (int j = 0; j < width; j++) {temp[i][j] = getFilteringValue(i, j, imageArray, filteringArray);}}return temp;
}public int getFilteringValue(int row, int col, int[][] imageArray, int[][] filteringArray) {int count = 0;int height = imageArray.length, width = imageArray[0].length;int filterLength = filteringArray.length;int gap = (filterLength - 1) / 2;for (int i = 0; i < filterLength; i++) {for (int j = 0; j < filterLength; j++) {if (row + i - gap >= 0 && row + i - gap < height && col + j - gap >= 0 && col + j - gap < width) {count += imageArray[row + i - gap][col + j - gap];}}}return count / (filterLength * filterLength);
}
将完整代码放在github上了,需要的可以参考。
图像直方图均衡化和空间滤波相关推荐
- Python实现图像直方图均衡化算法
title: "Python实现图像直方图均衡化算法" date: 2018-06-12T17:10:48+08:00 tags: [""] categorie ...
- 图像直方图均衡化算法 python实现
一. 直方图均衡化: 直方图均衡化是使图像直方图变得平坦的操作.直方图均衡化能够有效地解决图像整体过暗.过亮的问题,增加图像的清晰度. 具体流程如下所示.其中S是总的像素数,Zmax是像素的最大取值( ...
- Python OpenCV学习笔记之:图像直方图均衡化
# -*- coding: utf-8 -*- """ 图像直方图均衡化 """ import cv2 import numpy as np ...
- 图像直方图均衡化(Equalization)数学原理和纯C语言实现
图像处理入门 C语言生成RGB24格式图像 图像缩放之最近邻内插法 图像直方图均衡化数学原理和程序实现 目录 图像处理入门 一.图像均衡化数学原理 1.转化为数学问题 2.需要用到的知识 3.数学推理 ...
- 图像直方图均衡化c语言程序,数字图像处理——直方图均衡化
1.相关了解 直方图均衡化又称为直方图平坦化.直方图均衡化的基本思想是将原始图像的不均衡的直方图变换为均匀分布的形式.即将输入图像转化为在每一灰度级上都有相同的像素点数(即输出的直方图是平坦的,其分布 ...
- 【数字图像处理】图像直方图均衡化、空域滤波(均值滤波、中值滤波)、图像锐化(Laplace算子)、图像傅里叶变换实验
图像直方图均衡化.空域滤波.图像锐化.图像傅里叶变换 一.图像直方图均衡化 二.图像空域滤波 1.均值滤波(滤波次数n→3) 2.中值滤波(滤波次数n→3) 3.图像锐化(Laplace算子) 三.图 ...
- Python OpenCV实例:图像直方图均衡化(数学公式简单实现)
为什么80%的码农都做不了架构师?>>> #coding:utf-8 ''' 直方图均衡化 作用:通常用来增加图像局部对比度,尤其在图像的有用数据的对比度相当接近时,通过直方图 ...
- c语言增强图像直方图均衡化,图像直方图均衡化增强opencv与C语言版
本文实现彩色图像的全局直方图均衡.分别对R/G/B三通道均衡,读写图片采用OpenCV.代码如下: #include //#include //#include //#include #include ...
- skimage中的图像直方图均衡化
skimage用于图像的直方图均衡化的函数有两个,分别是equalize_hist和equalize_adapthist函数,本文详细介绍了这两个函数. equalize_hist函数 语法: ...
最新文章
- 使用repeater,遍历数据,不规则排序,不同的样式之间切换
- 柯洁:这是我最后一次人机大战 且看且珍惜
- 队列读取器代理 遇到错误 Row handle is invalid
- 机器学习 Python 库 Top 20
- 运动会成绩管理系统python_基于Eclipse+Mysql+Tomcat+MVC开发得大学运动会管理系统
- TangerineWallpaper for Mac(高清橘子壁纸) 中文版
- [oracle]Oracle 11g DG搭建(备库使用ASM)
- IDEA集成docker-maven-plugin配置CA安全证书
- win 10 虚拟机设置固定 ip
- vue3组件库-mycom3-vue 组件文档
- 如何在视频中加水印?分享这些实用的加水印方法给你
- CISP证书专栏 — CISP-IRE证书
- 基于AKF可扩展模型的微服务拆分方式
- 得到经纬度数据使用Plotly画世界地图(美赛心得)
- 阿里宣布组织大变动:集团迎来首位 80 后 CTO、张勇亲自挂帅阿里云!
- 使用Typora工具绘制流程图
- 嵌入式linux开发,unix系统整体架构图
- java音频频谱_H5录音音频可视化-实时波形频谱绘制、频率直方图
- WordPress的最佳PDF查看器比较
- win10升级至专业版
热门文章
- Mysql 2003错误 10038 1045 (推荐第七次解决方案)
- latexkatex@常用符号@符号手写识别
- python-机器学习-波士顿房价回归分析
- 恕我直言,赚钱真的不是靠拼命
- 可微硬件:AI将如何重振摩尔定律的良性循环
- 如何评测软件系统的安全性
- 人工智能数学基础之线性代数(二)
- linux网络编程--Web Server and HTTP
- 基本的计算机结构知识----基础向
- 卡尔曼滤波与组合导航原理_图解卡尔曼滤波器,无需深厚的数学知识也易懂(第五部分:多维卡尔曼滤波器)...