图像处理作业

发布 2022-06-29 01:20:28 阅读 3643

此次作业是在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 摄相机...