
数字图像处理的python实践
用python来实现一些数字图像处理的经典方法
渡边君
CV
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数字图像处理的python实践(1)——RGB转灰度
之前接触过PIL(Python Image Library)这个python很方便的图像处理的库,其中封装了不少与图像处理相关的内容。最近在从零开始学习数字图像处理,了解了许多处理的数学原理,凡是数学相关的东西,如果没有自己动手算个几次,称不上对这个内容有所了解。 首先是RGB转灰度图,原理自然是将三个通道的数值计算后得到一个通道的数值。PIL.Image对象有一个...原创 2019-06-26 14:22:27 · 1972 阅读 · 2 评论 -
数字图像处理的python实践(2)——灰度线性、对数、指数变换
我们目前比较好处理的对象是灰度图,因为它只有一个通道,也就意味着很多计算我们减少了一个维度,自然轻松一些。对于灰度图,首先要了解的是灰度直方图,也就是整体的图像中,灰度值的分布情况,通过直方图的形式来显示图片中是高灰度值的区域偏多还是低灰度值的区域偏多或者是其他情况,来指导我们后续的其他操作。以我们的之前转灰度的图片为例,结合matplotlib.pyplot库绘制归一化直方图的代...原创 2019-06-27 16:02:57 · 12130 阅读 · 1 评论 -
数字图像处理的python实践(3)——直方图均衡化
直方图均衡化又称为灰度均衡化,指的是通过某种灰度映射规律,来将输入图像转换成灰度直方图中每个范围内的像素点数目都基本一致的输出图像。这种情况下的输出图像,由于图中的不同数值的灰度数量分布是均匀的,图像也会拥有较高的对比度和较大的动态范围,不会出现直方图中集中在低值区域或者是集中在高值区域,对我们后续其他操作也有一定的帮助。 虽然现实中的图像都是离散的,均衡化的对象也...原创 2019-06-28 14:39:11 · 1650 阅读 · 1 评论 -
数字图像处理的python实践(4)——几何变换之平移、镜像、转置
几何变换是图像处理中的重要模块,标题中所涉及的内容都是很简单的,不多说明直接上代码了。首先是平移,因为像素点都是离散的,如果出现不是整数的平移矢量,需要进行一些其他的判断,我们暂时不讨论这种比较复杂的情况,在之后的缩放中再看当处理后的图像的点在原图中的对应位置并不落在像素点上的处理方法。from PIL import Imageimport numpy as npimpor...原创 2019-06-28 20:50:13 · 1455 阅读 · 0 评论 -
数字图像处理的python实践(5)——图像缩放、旋转
图像缩放是我们在进行图像处理时非常常用的一个手段,例如进行机深度学习时都需要将训练集中的图片调整到相同的尺寸大小。通常描述图片缩放有两种方式,第一种是PIL.Image.resize(height, width),输入调整后的尺寸;另一种是给出在x方向和y方向的缩放比率,我们先讨论第二种。 假设在x方向上的缩放比率是,在y方向上的缩放比率是。用矩阵来描述映射关系,下...原创 2019-06-30 20:47:21 · 3028 阅读 · 0 评论 -
数字图像处理的python实践(6)——双线性插值算法
该章节的目的是讨论双线性插值在图像旋转中的效果。基本引用上一篇文章中的旋转的代码,其中使用的是最近邻插值,取而代之。 线性插值,一维情况下,即我们有两个点,,现在要用线性插值求的数值为 那么双线性插值也是一样的思维,从下图中可以看出,现在一个方向上做插值,然后再在另一个方向上做插值,得到的结果即使我们点所要取的数值。图片引用自百度百科 ...原创 2019-07-01 14:51:55 · 1992 阅读 · 0 评论 -
数字图像处理的python实践(7)——图像平滑和高斯平滑
滤波是信号处理中的概念,指的是将信号中特定波段频率滤除的操作。在图像处理中,和通过傅里叶变化实现的频域下的滤波是等效的,所以也称为滤波。首先要学习的是空间域滤波,主要是基于邻域(空间域)对图像中的像素执行计算,这个术语用来区分之后会学习的频率域滤波。 所谓平滑,主要目的是为了减少和抑制图像中的噪声,在空间域中使用邻域平均的方法来实现。最最简单的就是平滑模板,是下方公式...原创 2019-07-02 16:13:15 · 6140 阅读 · 2 评论 -
数字图像处理的python实现(8)——中值滤波
无论是平均平滑还是高斯平滑,在处理图像噪声时,都或多或少会对图片产生一定的模糊,损失部分信息。较为理想的情况,是可以选择性地进行滤波,只在噪声区域进行平滑,而在无噪声区域不进行平滑,将模糊的影响降到最低,这就是自适应性滤波的思想。通常噪声的存在,可能会使得附近邻域内,极值的上下差距较大,或者是方差较大,我们可以设置一定的阈值来判断该点是否需要进行平滑。不过这个不是该章节的内容,这一...原创 2019-07-04 13:56:53 · 31463 阅读 · 17 评论 -
数字图像处理的python实践(9)——图像锐化
图像锐化是和平滑相反的操作,目的是为了使模糊的图像变得清晰。既然是相反的目的,那么操作应该也是相反的,平滑使用的是图像邻域的加权求和或者是积分运算,而锐化则是使用求导数(梯度)或有限差分来实现。基于一阶导数的图像增强——梯度算子 对于二维的连续函数,在点(x,y)处的梯度为 其中两个偏导数的计算公式为 梯度的幅值作为...原创 2019-07-04 20:21:24 · 29219 阅读 · 3 评论 -
数字图像处理的python实践(10)——高提升滤波
回忆下我们之前使用的一阶微分的Robert、Sobel算子或者是二维的拉普拉斯算子,其中各个系数之和都为0。说明了算子在灰度恒定的区域的响应为0,这就导致了我们在锐化之后的图像中,除了边缘处之外的区域都变成了黑色,只有高灰度值的边缘、细节和灰度跳变点作为黑背景中的高灰度部分突出显示。我们更加希望,在基于锐化的图像增强中,可以保留原图像中的信息,所以可以将原图像和锐化后的图像相加来得到...原创 2019-07-06 06:45:38 · 1475 阅读 · 2 评论 -
数字图像处理的python实践(11)——傅里叶变换和快速傅里叶变换
前面接触了空间域图像增强,现在要来学习频率域的图像增强。 对于一维的连续函数,定义域为整个时间轴的非周期函数f(t),它的傅里叶变换为 对应的逆傅里叶变换为 一维的离散函数 (其中x=0,1,2,...,M-1) 的傅里叶变换和逆变换为 对于二维的情况,二维连续函数f(x,y)的傅里叶变换...原创 2019-07-08 13:52:34 · 7522 阅读 · 1 评论 -
数字图像处理的python实践(12)——频域低通滤波器和高斯低通滤波器
上一章中学习了一维离散傅里叶变换的概念和实现。但在具体的图像中实现还是有点不足,首先我们需要输入图像的尺寸都是2的整数次幂,这个条件太过苛刻了,如果使用Resize又会损失信息。目前还是以熟悉为主,所以选择用numpy自带的方法来进行频域的转换。 那么很简单的,首要就是试一下把一张图片从空间域转换到频域上,然后在频域上分解成幅度谱和相位谱,然后再反过来利用幅度谱和相位...原创 2019-07-14 19:42:42 · 10246 阅读 · 1 评论 -
数字图像处理的python实践(13)——频域高通高斯滤波和拉普拉斯滤波
图像的锐化可以通过衰减图像频谱中的低频成分来实现,这建立起了空间域图像锐化和频率域高通滤波之间的对应关系。我们想要实现和上一章中高斯低通滤波相反的效果,即高斯高通滤波,实现的方法和上一章的代码基本一致,就是滤波函数有所不同,形式为 实现的代码如下,图像还是那熟悉的动漫女头,处理后边缘显得很清晰很突出,而除了边缘外其他的区域的颜色都是浅色。当sigma的数值越大,边缘提...原创 2019-07-15 15:08:58 · 6709 阅读 · 0 评论