▼页尾

随笔分类 -  Python

摘要:图像的细化主要是针对二值图而言所谓骨架,可以理解为图像的中轴,,一个长方形的骨架,是它的长方向上的中轴线,圆的骨架是它的圆心,直线的骨架是它自身,孤立点的骨架也是自身。骨架的获取主要有两种方法:(1)基于烈火模拟设想在同一时刻,将目标的边缘线都点燃,火的前沿以匀速向内部蔓延,当前沿相交时火焰熄灭,火焰熄灭点的结合就是骨架。(2)基于最大圆盘目标的骨架是由目标内所有内切圆盘的圆心组成我们来看看典型的图形的骨架(用粗线表示)细化的算法有很多种,但比较常用的算法是查表法细化是从原来的图中去掉一些点,但仍要保持原来的形状。实际上是保持原图的骨架。判断一个点是否能去掉是以8个相邻点(八连通)的情况来作为 阅读全文
posted @ 2011-01-01 16:27 xiatwhu 阅读(37025) 评论(11) 推荐(4) 编辑
摘要:学过信号处理的都应该知道傅立叶变换把时域上的信号处理为频域上的信号叠加对于在空间域上的数字图像,我们也能通过傅立叶变换转换为频域类的信号在实现某些图像处理的时候,频域类的处理比空间域更简单好啦,我们来看看二维离散信号的傅立叶变换数字图像的二维离散傅立叶变换所得的结果的频域成分如图所示,左上角是直流成分,变换结果四个角周围对应于低频成分,中央部分对应于高频部分。为了便于观察,我们常常使直流成分出现在窗口的中央,可采取换位方法,变换后中心为低频,向外是高频我们来看看具体实例[代码]这里我们直接用了OpenCV的DFT算法来做傅立叶变换我们来看看效果吧中间是没有换位前,后面是换位后在函数FFT中第二 阅读全文
posted @ 2010-12-30 18:04 xiatwhu 阅读(23926) 评论(5) 推荐(7) 编辑
摘要:在前面,我们讲了二值图的腐蚀和膨胀运算其实我们很容易把腐蚀和膨胀的概念扩展到灰度图上面去在讲二值图时,我们把粗框区域作为黑色区域而对于灰度图,我们把粗框区作为整个图形区域对于图形中的任一点,以其为中心的一个窗口,在窗口与原图的重合部分。若我们把重合区域中所有点灰度值的最大值赋给当前点,就是对灰度图的腐蚀操作若我们把重合区域中所有点灰度值的最小值赋给当前点,就是对灰度图的膨胀操作我们能看到,除了图像边缘的点之外,一般点的重合区域都和所选的窗口一样大如图中,我们把一个圆作为一个窗口。同样,你能把任意形状作为窗口好啦,我们就以方框作为窗口来编程[代码]函数中flag为0表示腐蚀,为其它值是表示膨胀n 阅读全文
posted @ 2010-12-30 14:15 xiatwhu 阅读(12413) 评论(7) 推荐(0) 编辑
摘要:我们直接看图吧我们把粗框内的区域看作原图像假设有一个圆在图像空间移动,取一个点作为圆的中心,若圆的区域被完全包含在原图像中则我们把它放到腐蚀后的区域中若只有一部分在原图像区域或没有一个点在原图区域中,我们则不会把它放在腐蚀区中显然,粗框区域腐蚀后会变成内部填充框区域而膨胀却恰恰相反把粗框线看作原图的话,取原图上一点为圆的中心,所以在圆的区域都被放在膨胀区显然,膨胀后,原图会变成外边框的区域上面,我们是以圆为窗的,事实上你可以使用任意窗形,不过最好有一个中心点好啦,我们来看看利用腐蚀和膨胀有什么效果吧[代码]看看运行效果吧第一幅图是原图的灰度图,第二幅图是对其做了二值处理对于二值图像来说,对黑色 阅读全文
posted @ 2010-12-29 22:58 xiatwhu 阅读(19738) 评论(2) 推荐(3) 编辑
摘要:人的生理视觉系统特征对微小的灰度变化感觉不敏感,而对彩色的微小差别极为敏感利用这一特点么就可以把人眼不敏感的灰度信号映射为人眼灵敏的彩色信号,以增强人对图像中细微变换的分辨率在图像处理技术中,彩色增强应用十分广泛且效果显著常见的彩色增强技术主要有假彩色增强和伪彩色增强两大类(1)假彩色增强思路是将灰度分层几级,比如我们这里将灰度分为16级然后每一级灰度对应一种彩色在查看原图中某像素,找出它所属的灰度级,用相应的彩色代替就行了(2)伪彩色处理由灰度值根据一定的映射关系求出R,G,B的值组成该点的彩色值典型的映射关系图为编写程序:[代码]效果如下:中间为假彩色增强右边是伪彩色增强把原本变化不明显的 阅读全文
posted @ 2010-12-29 15:28 xiatwhu 阅读(7760) 评论(1) 推荐(1) 编辑
摘要:这真是一件悲剧的事,早上,我花了很长时间写了这篇文章当我快要完成时,然后电脑就蓝屏了,重启后,一切都成了浮云好啦,没耐心再写那么多了,尽量简单吧在图像识别中,需要有边缘鲜明的图像,即图像锐化。图象锐化的目的是为了突出图像的边缘信息,加强图像的轮廓特征,以便于人眼的观察和机器的识别。在空间域进行图象锐化主要有以下方法梯度算子其他锐化算子拉普拉斯算子(1)梯度空间算子图像的边缘最直观的表现就是边缘两侧的灰度值相差比较大,在微积分中我们学过梯度的概念梯度是一个列向量,可表示为:而某点处梯度的模很好的反应了该点两侧的变化大小所以,梯度值很大的点也就代表了图像的边缘而在实际计算中,为了降低运算量,一般用 阅读全文
posted @ 2010-12-29 14:14 xiatwhu 阅读(22981) 评论(5) 推荐(1) 编辑
摘要:图象平滑的主要目的是减少图像噪声图像噪声来自多方面,常见的噪声有以下几种:加性噪声、乘性噪声、量化噪声、椒盐噪声减少噪声的方法可以在空间域或是在频率域在空间域,基本方法是求像素的平均值或中值在频率域,运用的是低通滤波技术在这里我们只讲空间域的图象平滑。频率域以后有机会再讲空间域的各种滤波器虽然形状不同,但在空间域实现图像滤波的方法是相似的。都是利用模板卷积,即将图像模板下的像素与模板系数的乘积求和操作。我们先来看3×3的模板:我们先来看看领域平均法:常用的平滑掩模算子有我们写程序来实现:[代码]效果如下:不同算子间差别很小,至少这幅图是这样的我们再来看看中值滤波器中值滤波器不存在算子的概念,只 阅读全文
posted @ 2010-12-29 09:53 xiatwhu 阅读(5322) 评论(0) 推荐(0) 编辑
摘要:对这个工具,你一定很熟悉吧,Photoshop里有,很多简单的图像处理软件里面也会有那这个工具到底是什么意思呢,它和我们要讲到的灰度变换有很大的关系在图像处理中,像图像度变换和直方图均衡都属于点运算范畴。处理时作用域是单个像素有表达式:  g(x,y) = T[ f(x,y) ]   T为映射关系在点运算中,映射关系是关键,它描述了输入灰度级和输出灰度级之间的关系。灰度变换是图像增强的一种重要手段,用于改善图像的显示效果,属于空域处理方法最开始我们讲的反转就属于灰度变换的一种其变换关系为  g(x,y) = 255 - f(x,y)我们来讲讲常用的灰度变换(1)灰度线性变换1.图像反转2.线性 阅读全文
posted @ 2010-12-28 14:06 xiatwhu 阅读(15458) 评论(0) 推荐(0) 编辑
摘要:直方图均衡化就是把一已知灰度概率分布的图像经过一种变换使之演变成一幅具有均匀灰度概率分布的新图像 阅读全文
posted @ 2010-12-28 10:38 xiatwhu 阅读(7853) 评论(0) 推荐(0) 编辑
摘要:好啦。现在我们来介绍下图像的直方图说白了,直方图就是统计图像中像素点为某值的个数对于8位灰度图来说,颜色有256级,统计每级的个数然后把结果用图表表示出来就可以了看看程序吧[代码]我们先统计各灰度值像素点个数然后我们把个数值映射到(0,200)的范围方便我们画图我们来看看结果吧。还可以啦其实OpenCV提供了直方图函数我简单看了下,没有丝毫思路,以后看懂了再来对比一下现在我们把一幅图的三个通道放开来看看吧[代码]有一点要说明的是OpenCV中每个像素三色是按照BGR排列的运行效果这些直方图有什么作用呢?以后再来说明 阅读全文
posted @ 2010-12-27 12:54 xiatwhu 阅读(11679) 评论(0) 推荐(0) 编辑
摘要:图像的错切实际上是平面景物在投影平面上的非垂直投影。错切使图像中的图形产生扭变我们来看看错切的两种情况:水平方向错切垂直方向错切水平方向错切我们来直观看看错切的效果吧其数学表达式为:矩阵变换为:其中b为tan(a),a为错切角度好啦,我们还是写程序来看看效果吧[代码]效果如下:好了。垂直方向的就不多讲了。和水平方向的基本相同。我们来考虑下之前讲过的“蜂窝煤”吧左图是我们希望得到的图,而在计算机中图像只能一个像素一个像素的现实所以,可能出现左边的两个像素点映射取整后都映射到右图中的同一点,那另一点就形成空穴,就是我们之前提到的“蜂窝煤”解决这个问题的方法应该有很多种,我想到两种比较直观的。第一种 阅读全文
posted @ 2010-12-27 10:52 xiatwhu 阅读(6145) 评论(0) 推荐(0) 编辑
摘要:好啦,在这里我要介绍图像的缩放啦图像比例缩放是指将给定的图像在x轴方向按比例缩放,在y轴方向也按比例缩放,从而获得一幅新的图像。如果两个方向上缩放比例相等,则为全比例缩放,否则为非全比例缩放比例缩放用矩阵形式可表示为代数式为我们先来看图像的比例缩小变换介绍两种简单的缩小变换方法:基于等间隔采样的图像缩小方法基于局部均值的图像缩小方法基于等间距采样的图像缩小方法的设计思路是,对画面像素均匀采样来保持所选像素仍旧可以保持图像的特征说白了,就是选择一些点,舍弃一些点,用选择的点组成一幅图,使它和原图差不多若比例因子为m和n,原图的矩阵为f[M×N],缩小后的矩阵为g[(M*m)×(N*n)]由于原图 阅读全文
posted @ 2010-12-26 23:15 xiatwhu 阅读(16018) 评论(0) 推荐(0) 编辑
摘要:旋转有一个绕什么转的问题。我们先来看最简单的,绕第一个像素转,则旋转的情况会像这样:令旋转前有旋转a角度后有以矩阵形式表示为编写程序:[代码]当图片较大时,计算会很慢。主要是判断和计算太多了这里只讨论图像处理,程序的优化暂时放一边运行结果如下:我们能看到,旋转后的图像有很多“蜂窝煤”。主要是点转换后要取整。导致原图中有些点映射到同一个点,而生成的图中有些点在原图中没有点映射到它。所以出现了很多“蜂窝煤”。果然理论还只是理论啊下面我们来看看更通常一点的做法:以图像的中心为圆心进行旋转。这里涉及到一个坐标系的转换问题。看下图:在矩阵中我们的坐标系通常是AB和AC方向的,而传统的笛卡尔直角坐标系是D 阅读全文
posted @ 2010-12-26 16:41 xiatwhu 阅读(23861) 评论(1) 推荐(0) 编辑
摘要:平移是最简单的一种变换,是将一幅图像上的所有点都被按照给定的偏移量在水平方向沿X轴、在垂直方向沿y轴移动其变换公式是可用矩阵变换公式逆变换方法是若移动后大小不变当多余部分填充为黑色时平移结果为当多余部分为白色时平移结果为若移动后图像尺寸变大则平移结果为好了,我们用OpenCV实现上面的运算[代码]我们来看运行结果可以看出对于iTr3,我们没有对多余部分进行处理,显示的颜色是黑色所以在CreateImage函数创建一副图的时候,若不进行处理。是一副黑色的图像即每个像素点都是0或是tuple(0,0,0)好啦。图像的平移就是这样啦 阅读全文
posted @ 2010-12-26 09:52 xiatwhu 阅读(9356) 评论(0) 推荐(0) 编辑
摘要:图像的镜像变化不改变图像的形状。图像的镜像变换分为三种:水平镜像、垂直镜像、对角镜像设图像的大小为M×N,则水平镜像可按公式I = iJ = N - j + 1垂直镜像可按公式I = M - i + 1J = j对角镜像可按公式I = M - i + 1J = N - j + 1值得注意的是在OpenCV中坐标是从[0,0]开始的所以,式中的 +1 在编程时需要改为 -1具体程序如下:[代码]运行结果如下:好啦。是不是很简单呢 阅读全文
posted @ 2010-12-25 23:01 xiatwhu 阅读(7535) 评论(0) 推荐(0) 编辑
摘要:我们先加载一个8位灰度图像每一个像素对应的灰度值从0-255则只需要读取每个像素的灰度值A,再将255-A写入这样操作一遍后,图像就会反色了使用的是OpenCV2.0版具体python代码如下:[代码]运行结果如下:我们再稍微改动一下上面的代码对于彩色图片,对于每个像素点,OpenCV在Python中是以tuple(R,G,B)的形式存储的所以对于彩色图片的反色,只需要获得tuple(255-R,255-G,255-B)就行了代码如下:代码运行效果如下:好了,我们用OpenCV做最简单的图像处理的第一步就完成了 阅读全文
posted @ 2010-12-25 22:08 xiatwhu 阅读(11981) 评论(2) 推荐(0) 编辑

▲页首
西