▼页尾

随笔分类 -  数字图像处理

摘要:这篇文章介绍了直方图均衡化的方法 阅读全文
posted @ 2011-08-06 13:45 xiatwhu 阅读(11974) 评论(0) 推荐(1) 编辑
摘要:我们仍然如前例一样,构建一个类来处理得到直方图。我们来看看基本的类定义#ifndef HISTOGRAM_H_#define HISTOGRAM_H_#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <iostream>#include <vector>class Histogram {private: int histSize[1]; float hr 阅读全文
posted @ 2011-08-03 13:33 xiatwhu 阅读(5229) 评论(4) 推荐(0) 编辑
摘要:在这个例子中,我们开始选定一种颜色,并设置一个阈值然后把图片中和所选颜色的差别在阈值中的点标定出来在这个例子中,主要要注意这两点:1. OpenCV与QT的结合,包括Mat 与 QImage 的转换2. 我们使用了类来实现此功能,创建了一个单例模式的类首先我们创建一个简单的图形界面,使用的是QT创建处理图像用的类#ifndef COLORDETECTOR_H_#define COLORDETECTOR_H_#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include < 阅读全文
posted @ 2011-07-31 14:21 xiatwhu 阅读(15926) 评论(1) 推荐(0) 编辑
摘要:内容来自《OpenCV 2 Computer Vision Application Programming Cookbook》OpenCV2 访问图像的各个像素有各种方法我们来用各种方法来实现减少图像的颜色数量color = color/div*div +div/2;若div为8,则原来RGB每个通道的256种颜色减少为32种。若div为64,则原来RGB每个通道的256种颜色减少为4种,此时三通道所有能表示的颜色有4×4×4 = 64 种首先,我们来看一个函数C++: uchar* Mat::ptr(int i=0)i 是行号,返回的是该行数据的指针。在OpenCV中,一 阅读全文
posted @ 2011-07-30 23:21 xiatwhu 阅读(25058) 评论(1) 推荐(1) 编辑
摘要:C++: void Mat::copyTo(OutputArray m) constC++: void Mat::copyTo(OutputArray m, InputArray mask) const这个函数可以复制图像到另一个图像或矩阵上,可选参数是掩码由于叠加的图像大小不一定相等,比如我们这里把一张小照片加到一张大照片上我们可以在大照片上设置一个和小照片一样大的感兴趣区域不使用掩码的时候,我们载入一张png,和一张jpg#include <opencv2/highgui/highgui.hpp>#include <opencv2/core/core.hpp>int 阅读全文
posted @ 2011-07-30 20:52 xiatwhu 阅读(12667) 评论(6) 推荐(0) 编辑
摘要:椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。我们用程序来模拟椒盐噪声,随机选取一些像素,把这些像素设为白色。#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <cstdlib>void salt(cv::Mat&, int n=3000);int main(){ cv::Mat image = cv::imread("E:/Image/Lena.jpg"); salt( 阅读全文
posted @ 2011-07-28 12:00 xiatwhu 阅读(8659) 评论(1) 推荐(0) 编辑
摘要:OpenCV的接口包括C++,C,Python的我用MinGW编译OpenCV2.1 和 OpenCV2.2 从未成功过前几日发现 OpenCV 2.3发布,下载了自解压程序,解压后又visual studio 2008,2010和MinGW版的但其中的MinGW版的是官方 MinGW的,我使用的是在 http://nuwen.net/mingw.html 下载的编译程序连接时总出错,于是下载了源码包,编译后能正常使用先来看看最简单的图像的载入与显示,使用C++接口#include <opencv2/core/core.hpp>#include <opencv2/highgu 阅读全文
posted @ 2011-07-28 11:53 xiatwhu 阅读(7606) 评论(0) 推荐(0) 编辑
摘要:cvAbsDiffCalculates absolute difference between two arrays.void cvAbsDiff(const CvArr* src1, const CvArr* src2, CvArr* dst);src1 The first source arraysrc2 The second source arraydst The destination arrayThe function calculates absolute difference between two arrays.dst(i)c = |src1(I)c − src2(I)c |Al 阅读全文
posted @ 2011-03-25 18:54 xiatwhu 阅读(12484) 评论(1) 推荐(3) 编辑
摘要:图像的细化主要是针对二值图而言所谓骨架,可以理解为图像的中轴,,一个长方形的骨架,是它的长方向上的中轴线,圆的骨架是它的圆心,直线的骨架是它自身,孤立点的骨架也是自身。骨架的获取主要有两种方法:(1)基于烈火模拟设想在同一时刻,将目标的边缘线都点燃,火的前沿以匀速向内部蔓延,当前沿相交时火焰熄灭,火焰熄灭点的结合就是骨架。(2)基于最大圆盘目标的骨架是由目标内所有内切圆盘的圆心组成我们来看看典型的图形的骨架(用粗线表示)细化的算法有很多种,但比较常用的算法是查表法细化是从原来的图中去掉一些点,但仍要保持原来的形状。实际上是保持原图的骨架。判断一个点是否能去掉是以8个相邻点(八连通)的情况来作为 阅读全文
posted @ 2011-01-01 16:27 xiatwhu 阅读(36898) 评论(11) 推荐(4) 编辑
摘要:学过信号处理的都应该知道傅立叶变换把时域上的信号处理为频域上的信号叠加对于在空间域上的数字图像,我们也能通过傅立叶变换转换为频域类的信号在实现某些图像处理的时候,频域类的处理比空间域更简单好啦,我们来看看二维离散信号的傅立叶变换数字图像的二维离散傅立叶变换所得的结果的频域成分如图所示,左上角是直流成分,变换结果四个角周围对应于低频成分,中央部分对应于高频部分。为了便于观察,我们常常使直流成分出现在窗口的中央,可采取换位方法,变换后中心为低频,向外是高频我们来看看具体实例[代码]这里我们直接用了OpenCV的DFT算法来做傅立叶变换我们来看看效果吧中间是没有换位前,后面是换位后在函数FFT中第二 阅读全文
posted @ 2010-12-30 18:04 xiatwhu 阅读(23864) 评论(5) 推荐(6) 编辑
摘要:在前面,我们讲了二值图的腐蚀和膨胀运算其实我们很容易把腐蚀和膨胀的概念扩展到灰度图上面去在讲二值图时,我们把粗框区域作为黑色区域而对于灰度图,我们把粗框区作为整个图形区域对于图形中的任一点,以其为中心的一个窗口,在窗口与原图的重合部分。若我们把重合区域中所有点灰度值的最大值赋给当前点,就是对灰度图的腐蚀操作若我们把重合区域中所有点灰度值的最小值赋给当前点,就是对灰度图的膨胀操作我们能看到,除了图像边缘的点之外,一般点的重合区域都和所选的窗口一样大如图中,我们把一个圆作为一个窗口。同样,你能把任意形状作为窗口好啦,我们就以方框作为窗口来编程[代码]函数中flag为0表示腐蚀,为其它值是表示膨胀n 阅读全文
posted @ 2010-12-30 14:15 xiatwhu 阅读(12392) 评论(7) 推荐(0) 编辑
摘要:我们直接看图吧我们把粗框内的区域看作原图像假设有一个圆在图像空间移动,取一个点作为圆的中心,若圆的区域被完全包含在原图像中则我们把它放到腐蚀后的区域中若只有一部分在原图像区域或没有一个点在原图区域中,我们则不会把它放在腐蚀区中显然,粗框区域腐蚀后会变成内部填充框区域而膨胀却恰恰相反把粗框线看作原图的话,取原图上一点为圆的中心,所以在圆的区域都被放在膨胀区显然,膨胀后,原图会变成外边框的区域上面,我们是以圆为窗的,事实上你可以使用任意窗形,不过最好有一个中心点好啦,我们来看看利用腐蚀和膨胀有什么效果吧[代码]看看运行效果吧第一幅图是原图的灰度图,第二幅图是对其做了二值处理对于二值图像来说,对黑色 阅读全文
posted @ 2010-12-29 22:58 xiatwhu 阅读(19703) 评论(2) 推荐(3) 编辑
摘要:人的生理视觉系统特征对微小的灰度变化感觉不敏感,而对彩色的微小差别极为敏感利用这一特点么就可以把人眼不敏感的灰度信号映射为人眼灵敏的彩色信号,以增强人对图像中细微变换的分辨率在图像处理技术中,彩色增强应用十分广泛且效果显著常见的彩色增强技术主要有假彩色增强和伪彩色增强两大类(1)假彩色增强思路是将灰度分层几级,比如我们这里将灰度分为16级然后每一级灰度对应一种彩色在查看原图中某像素,找出它所属的灰度级,用相应的彩色代替就行了(2)伪彩色处理由灰度值根据一定的映射关系求出R,G,B的值组成该点的彩色值典型的映射关系图为编写程序:[代码]效果如下:中间为假彩色增强右边是伪彩色增强把原本变化不明显的 阅读全文
posted @ 2010-12-29 15:28 xiatwhu 阅读(7731) 评论(1) 推荐(1) 编辑
摘要:这真是一件悲剧的事,早上,我花了很长时间写了这篇文章当我快要完成时,然后电脑就蓝屏了,重启后,一切都成了浮云好啦,没耐心再写那么多了,尽量简单吧在图像识别中,需要有边缘鲜明的图像,即图像锐化。图象锐化的目的是为了突出图像的边缘信息,加强图像的轮廓特征,以便于人眼的观察和机器的识别。在空间域进行图象锐化主要有以下方法梯度算子其他锐化算子拉普拉斯算子(1)梯度空间算子图像的边缘最直观的表现就是边缘两侧的灰度值相差比较大,在微积分中我们学过梯度的概念梯度是一个列向量,可表示为:而某点处梯度的模很好的反应了该点两侧的变化大小所以,梯度值很大的点也就代表了图像的边缘而在实际计算中,为了降低运算量,一般用 阅读全文
posted @ 2010-12-29 14:14 xiatwhu 阅读(22952) 评论(5) 推荐(1) 编辑
摘要:图象平滑的主要目的是减少图像噪声图像噪声来自多方面,常见的噪声有以下几种:加性噪声、乘性噪声、量化噪声、椒盐噪声减少噪声的方法可以在空间域或是在频率域在空间域,基本方法是求像素的平均值或中值在频率域,运用的是低通滤波技术在这里我们只讲空间域的图象平滑。频率域以后有机会再讲空间域的各种滤波器虽然形状不同,但在空间域实现图像滤波的方法是相似的。都是利用模板卷积,即将图像模板下的像素与模板系数的乘积求和操作。我们先来看3×3的模板:我们先来看看领域平均法:常用的平滑掩模算子有我们写程序来实现:[代码]效果如下:不同算子间差别很小,至少这幅图是这样的我们再来看看中值滤波器中值滤波器不存在算子的概念,只 阅读全文
posted @ 2010-12-29 09:53 xiatwhu 阅读(5303) 评论(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 阅读(15434) 评论(0) 推荐(0) 编辑
摘要:直方图均衡化就是把一已知灰度概率分布的图像经过一种变换使之演变成一幅具有均匀灰度概率分布的新图像 阅读全文
posted @ 2010-12-28 10:38 xiatwhu 阅读(7817) 评论(0) 推荐(0) 编辑
摘要:好啦。现在我们来介绍下图像的直方图说白了,直方图就是统计图像中像素点为某值的个数对于8位灰度图来说,颜色有256级,统计每级的个数然后把结果用图表表示出来就可以了看看程序吧[代码]我们先统计各灰度值像素点个数然后我们把个数值映射到(0,200)的范围方便我们画图我们来看看结果吧。还可以啦其实OpenCV提供了直方图函数我简单看了下,没有丝毫思路,以后看懂了再来对比一下现在我们把一幅图的三个通道放开来看看吧[代码]有一点要说明的是OpenCV中每个像素三色是按照BGR排列的运行效果这些直方图有什么作用呢?以后再来说明 阅读全文
posted @ 2010-12-27 12:54 xiatwhu 阅读(11670) 评论(0) 推荐(0) 编辑
摘要:图像的错切实际上是平面景物在投影平面上的非垂直投影。错切使图像中的图形产生扭变我们来看看错切的两种情况:水平方向错切垂直方向错切水平方向错切我们来直观看看错切的效果吧其数学表达式为:矩阵变换为:其中b为tan(a),a为错切角度好啦,我们还是写程序来看看效果吧[代码]效果如下:好了。垂直方向的就不多讲了。和水平方向的基本相同。我们来考虑下之前讲过的“蜂窝煤”吧左图是我们希望得到的图,而在计算机中图像只能一个像素一个像素的现实所以,可能出现左边的两个像素点映射取整后都映射到右图中的同一点,那另一点就形成空穴,就是我们之前提到的“蜂窝煤”解决这个问题的方法应该有很多种,我想到两种比较直观的。第一种 阅读全文
posted @ 2010-12-27 10:52 xiatwhu 阅读(6117) 评论(0) 推荐(0) 编辑
摘要:好啦,在这里我要介绍图像的缩放啦图像比例缩放是指将给定的图像在x轴方向按比例缩放,在y轴方向也按比例缩放,从而获得一幅新的图像。如果两个方向上缩放比例相等,则为全比例缩放,否则为非全比例缩放比例缩放用矩阵形式可表示为代数式为我们先来看图像的比例缩小变换介绍两种简单的缩小变换方法:基于等间隔采样的图像缩小方法基于局部均值的图像缩小方法基于等间距采样的图像缩小方法的设计思路是,对画面像素均匀采样来保持所选像素仍旧可以保持图像的特征说白了,就是选择一些点,舍弃一些点,用选择的点组成一幅图,使它和原图差不多若比例因子为m和n,原图的矩阵为f[M×N],缩小后的矩阵为g[(M*m)×(N*n)]由于原图 阅读全文
posted @ 2010-12-26 23:15 xiatwhu 阅读(15966) 评论(0) 推荐(0) 编辑

▲页首
西