此次作业是在vc++6.0平台下开发一种关于图像处理的可执行文件,点击图标。
进入该可执行文件。打开后会出现如图(1)的文本框:
图(1)通过文件菜单栏的打开项来打开一个bmp格式的**(提示:现在还只能代开bmp格式的**),会出现图(2)。
图(2)由图(2)菜单栏可以看出,该文件可以实现以下的功能:
1. 点运算。
2. 正交变换。
3. 图像增强。
4. 形态学变换。
5. 图像分割。
下面将要对菜单栏中的每一个菜单进行说明。
1.点运算菜单:
图(3)由图(3),该菜单可实现图像反色,图像线性变换,阈值变换和窗口变换等功能。
a.图像反色。
图(4)原图(左)与取反后的图像(右)
源**:unsigned char* lpsrc指向源图像的指针。
long i循环变量。
long j;
long llinebytes图像每行的字节数
float ftemp中间变量
llinebytes = widthbytes(lwidth * 8); 计算图像每行的字节数。
for(i = 0; i < lheight; i每行。
for(j = 0; j < lwidth; j每列。
b.线性变换。
点击线性变换后会弹出图(5)
图(5)可以对斜率和线距进行取值,当斜率取-1,线距取255时就是对图像取反色,如图(6)
图(6)c.阈值变换。
点击阈值变换菜单栏会弹出图(7)对话框。
图(7)将鼠标放在坐标系的蓝色线处可以点击鼠标左键并拖动来改变阈值,点击确定后可以将**进行阈值变换。结果如下图。
图(8):阈值取58变换后的**。
源程序:unsigned char* lpsrc指向源图像的指针
long i循环变量。
long j;
long llinebytes图像每行的字节数。
llinebytes = widthbytes(lwidth * 8);/计算图像每行的字节数
for(i = 0; i < lheight; i每行。
for(j = 0; j < lwidth; j每列。
d.窗口变换。
该项需要用到图像的灰度直方图,点击菜单栏中的查看—>直方图就能打开图像的灰度图,如图(9),通过图(9)可知该图的灰度直方图,由此可以看出改图的灰度主要集中在0到200,我们要是取0到100图像会变成什么样子,下面就通过窗口变换来实现,点击窗口变换会弹出窗口变换对话框,去下限为0上限为100点击确定如图(10)
图(10):下限取0上限取100所得到得图像。
源**:unsigned char* lpsrc指向源图像的指针
long i循环变量。
long j;
long llinebytes图像每行的字节数。
llinebytes = widthbytes(lwidth * 8);/计算图像每行的字节数
for(i = 0; i < lheight; i每行。
2.正交变换。
在正交变换中只编了一个傅里叶变换,还以lena这个图为例,点击傅里叶变换所得结构如图(12)
图(12):lena的傅里叶变换。
源**:1)傅里叶正变换:
fft(complex * td, complex * fd, int r)
long count付立叶变换点数
int i,j,k循环变量。
int bfsize,p;
double angle角度
complex *w,*x1,*x2,*x;
count = 1 < // 分配运算所需存储器。 w = new complex[count / 2]; x1 = new complex[count]; x2 = new complex[count]; // 计算加权系数。 for(i = 0; i < count / 2; i++) // 将时域点写入x1 memcpy(x1, td, sizeof(complex) *count); // 采用蝶形算法进行快速付立叶变换。 for(k = 0; k < r; k++) x = x1; x1 = x2; x2 = x; // 重新排序。 for(j = 0; j < count; j++) fd[j]=x1[p]; delete w; delete x1; delete x2; 2)傅里叶逆变换: ifft(complex * fd, complex * td, int r) long count付立叶变换点数 int i循环变量 complex *x; count = 1 < x = new complex[count]; 分配运算所需存储器。 memcpy(x, fd, sizeof(complex) *count); 将频域点写入x // 求共轭。 for(i = 0; i < count; i++) fft(x, td, r调用快速付立叶变换。 // 求时域点的共轭。 for(i = 0; i < count; i++) delete x; 3)对图像进行傅里叶变换。 bool cdibimage::fourier(lpstr lpdibbits, long lwidth, long lheight) unsigned char* lpsrc; /指向源图像的指针。 double dtemp; long i循环变量。 long j; long w进行付立叶变换的宽度(2的整数次方) long h进行付立叶变换的高度(2的整数次方) int wp; int hp; long llinebytes图像每行的字节数。 llinebytes = widthbytes(lwidth * 8); 计算图像每行的字节数。 // 赋初值。 w = 1; h = 1; wp = 0; hp = 0; // 计算进行付立叶变换的宽度和高度(2的整数次方) while(w * 2 <=lwidth) while(h * 2 <=lheight) complex *td = new complex[w * h]; complex *fd = new complex[w * h]; for(i = 0; i < h; i行。 for(j = 0; j < w; j列。 for(i = 0; i < h; i++) // 保存变换结果。 选题1 请采用学过的图像去噪方法 鼓励自己研究新算法 对 boy 和california 22 图像进行去噪处理。来自代做图像处理。实现环境 matlab 7.1程序说明 源 i imread 读取图像。imshow i显示。b medfilt2 i,4 4中值滤波。figure,imshow b显... 图像处理作业安排。通过一段时间的学习,图像处理也基本入门了,大家对图像也应该有了一些概念了。图像处理是很有意思的,但由于敝人实在口拙,很多相关知识可能没有讲解清楚,望大家见谅。通过这次给大家讲解,使我对图像理解也更多,自己也得到了锻炼 口才 胆量等 对图像有疑问咱们尽管交流,现安排图像处理的一些作业... 图像处理与分析。第1题 啤酒厂要对酒瓶的质量进行检测,需要通过摄像机拍摄,找出瓶身上有杂质的酒瓶。要求 1 杂质实际尺寸为2mm 2mm,所成像的尺寸大于5 5个像素,要对整个范围成像。2 给出满足要求的像元尺寸 物距 成像面大小以及具体摄像机的型号 成像面的分辨率 镜头焦距等相关参数。图2 摄相机...图像处理作业
图像处理作业
图像处理作业