8种常用图像处理算法这是我毕业设计的一部分代码.docx

上传人:b****6 文档编号:6307054 上传时间:2023-01-05 格式:DOCX 页数:31 大小:18.60KB
下载 相关 举报
8种常用图像处理算法这是我毕业设计的一部分代码.docx_第1页
第1页 / 共31页
8种常用图像处理算法这是我毕业设计的一部分代码.docx_第2页
第2页 / 共31页
8种常用图像处理算法这是我毕业设计的一部分代码.docx_第3页
第3页 / 共31页
8种常用图像处理算法这是我毕业设计的一部分代码.docx_第4页
第4页 / 共31页
8种常用图像处理算法这是我毕业设计的一部分代码.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

8种常用图像处理算法这是我毕业设计的一部分代码.docx

《8种常用图像处理算法这是我毕业设计的一部分代码.docx》由会员分享,可在线阅读,更多相关《8种常用图像处理算法这是我毕业设计的一部分代码.docx(31页珍藏版)》请在冰豆网上搜索。

8种常用图像处理算法这是我毕业设计的一部分代码.docx

8种常用图像处理算法这是我毕业设计的一部分代码

种常用图像处理算法(函数)这是我毕业设计的一部分代码

*************************************************************************

*

*函数名称:

*

*()

*

*参数:

*

*指向源图像指针

*

*返回值:

*

*镜像成功返回,否则返回。

*

*说明:

*

*该函数用来实现图像的垂直镜像。

*

************************************************************************

()

{

原图象宽度

;

原图象高度

;

原图象的颜色数

;

原图象的信息头结构指针

;

指向原图象和目的图象的像素的指针

;

平移后剩余图像在源图像中的位置(矩形区域)

;

指向原图像像素的指针

;

指向复制图像像素的指针

;

内存句柄

;

循环变量

;

图像每行的字节数

;

获取图象的信息头结构的指针

();

找到图象的像素位置

()();

获取图象的宽度

();

获取图象的高度

();

获取图象的颜色数

();

计算图像每行的字节数

(*(>));

暂时分配内存,以保存新图像

(,);

分配内存失败,直接返回

()

;

锁定内存

()();

如果是色位图或真彩色位图

()

{

平移图像,每次移动一行

(;<;)

{

指向原图象倒数第行像素起点的指针

()*;

目标区域同样要注意上下倒置的问题

()*();

备份一行

(,,);

将倒数第行像素复制到第行

(,,);

将第行像素复制到第行

(,,);

}

}

{

("只支持色和真彩色位图");

释放内存

();

();

;

}

释放内存

();

();

返回

;

}

*************************************************************************

*

*函数名称:

*

*()

*

*参数:

*

*指向源图像指针

*

*

*说明:

*

*该函数用来实现图像的旋转。

*

************************************************************************

()

{

原图象宽度

;

原图象高度

;

旋转后图象宽度

;

旋转后图象高度

;

原图象的颜色数

;

原图象的信息头结构指针

;

指向原图象和目的图象的像素的指针

;

指向原图像像素的指针

;

指向旋转后图像(像素)的指针

;

;

旋转后新的句柄

;

循环变量

;

原图像每行的字节数

;

旋转后图像每行的字节数

;

旋转角度的弧度

;

旋转角度的正弦和余弦

;

旋转前图象四个角的坐标(以图象中心为坐标系原点)

;

;

旋转后图象四个角的坐标(以图象中心为坐标系原点)

;

;

两个中间量

;

找到图象的像素位置

()();

获取图象的宽度

();

获取图象的高度

();

获取图象的颜色数

();

获取指向原位图信息头结构的指针

();

计算原图像每行的字节数

(*(>));

将旋转角度从度转换到弧度

(*);

计算旋转角度的正弦

()();

计算旋转角度的余弦

()();

计算原图的四个角的坐标(以图像中心为坐标系原点)

()(());

()(());

()(());

()(());

()(());

()(());

()(());

()(());

计算新图四个角的坐标(以图像中心为坐标系原点)

**;

**;

**;

**;

**;

**;

**;

**;

计算旋转后的图像实际宽度

()(((),

()));

计算旋转后的图像高度

()(((),

()));

计算旋转后图像每行的字节数

(*>);

计算两个常数

()(*()**()*

*());

()(*()**()*

*());

暂时分配内存,以保存新图像

()(,*

*()());

分配内存失败,直接返回

()

;

锁定内存

()(());

复制信息头和调色板

(,*()());

获取图象的信息头结构的指针

();

更新图象的高度和宽度

>;

>;

找到新像素的起始位置

()();

如果是色位图

()

{

旋转后图像每行

(;<;)

{

旋转后图象每列

(<)

{

指向图象第行第个像素的指针

()*();

计算每个像素点在原图象中的坐标

()((())*(())*);

()((())*(())*);

判断是否在源图象范围之内

((>)(<)(>)(<))

{

指向源图象第行,第个象素的指针

()*();

复制象素

**;

}

{

对于源图中没有的象素,直接赋值为

*(());

}

}

}

}

如果是位真彩色位图

()

{

旋转后图像每行

(;<;)

{

旋转后图象每列

(<)

{

指向图象第行第个像素的指针

()*()*;

计算每个像素点在原图象中的坐标

()((())*(())*);

()((())*(())*);

判断是否在源图象范围之内

((>)(<)(>)(<))

{

指向源图象第行,第个象素的指针

()*()*;

复制象素

();

}

{

对于源图中没有的象素,直接赋值为

();

}

}

}

}

{

("只支持色和真彩色位图");

释放内存

();

();

;

}

返回

;

}

*************************************************************************

*

*函数名称:

*()

*

*参数:

*指向源的指针

*轴方向缩放比率

*轴方向缩放比率

*

*返回值:

*缩放成功返回新句柄,否则返回。

*

*说明:

*该函数用来缩放图像,返回新生成的句柄。

*

************************************************************************

(,,)

{

源图像的宽度和高度

;

;

缩放后图像的宽度和高度

;

;

;

缩放后图像的宽度(',必须是的倍数)

;

指向源图像的指针

;

指向源象素的指针

;

缩放后新句柄

;

指向缩放图像对应象素的指针

;

指向缩放图像的指针

;

;

指向结构的指针()

;

指向结构的指针

;

循环变量(象素在新中的坐标)

;

;

象素在源中的坐标

;

;

图像每行的字节数

;

找到源图像象素起始位置

()();

获取图像的宽度

();

获取图像的高度

();

();

();

计算图像每行的字节数

(*(>));

计算缩放后的图像实际宽度

此处直接加是由于强制类型转换时不四舍五入,而是直接截去小数部分

()(*);

计算新图像每行的字节数

(*(>));

计算缩放后的图像高度

()(*);

分配内存,以保存新

()(,**()());

判断是否内存分配失败

()

{

分配内存失败

;

}

锁定内存

()(());

复制信息头和调色板

(,,*()());

找到新象素起始位置

()();

获取指针

();

();

更新中图像的高度和宽度

(())

{

对于

>;

>;

}

{

对于其它格式的

>();

>();

}

()

{

针对图像每行进行操作

(;<;)

{

针对图像每列进行操作

(;<;)

{

指向新第行,第个象素的指针

注意此处宽度和高度是新的宽度和高度

()*();

计算该象素在源中的坐标

()();

()();

判断是否在源图范围内

((>)(<)(>)(<))

{

指向源第行,第个象素的指针

()*();

复制象素

**;

}

{

对于源图中没有的象素,直接赋值为

*(());

}

}

}

}

()

{(;<;)

{

针对图像每列进行操作

(;<;)

{

指向新第行,第个象素的指针

注意此处宽度和高度是新的宽度和高度

()*()*;

计算该象素在源中的坐标

()();

()();

判断是否在源图范围内

((>)(<)(>)(<))

{

指向源第行,第个象素的指针

()*()*;

复制象素

();

}

{

对于源图中没有的象素,直接赋值为

();

}

}

}

}

返回

;

}

*************************************************************************

*

*函数名称:

*()

*

*说明:

*该算法函数用来把图像转化成灰度图像。

*

************************************************************************

()

{

:

获取文档指针

*();

指向的指针

;

指向象素指针

;

指向的一个象素的指针

*;

颜色表中的颜色数目

;

灰度映射表

[];

调色板索应循环变量

;

图象高度循环变量

;

图象宽度循环变量

;

图像宽度

;

图像高度

;

图像每行的字节数

;

指向结构的指针()

;

指向结构的指针()

;

表明是否是的标记

;

()(()>());

获取指向结构的指针()

();

获取指向结构的指针()

();

锁定

获取中颜色表中的颜色数目

();

判断是否是色位图

()

{

("不是色位图!

");

解除锁定

(()>());

返回

;

}

更改光标形状

();

判断是否是的

();

将原图象的调色板转化为灰度调色板

建立原调色板索引与灰度调色板索引的映射关系

(;<;)

{

()

{

对原色调色板的每一表项计算对应的灰度值

[]()(*>[]

*>[]

*>[]);

建立灰度调色板

红色分量

>[];

绿色分量

>[];

蓝色分量

>[];

保留位

>[];

}

{

对原色调色板的每一表项计算对应的灰度值

[]()(*>[]

*>[]

*>[]);

建立灰度调色板

红色分量

>[];

绿色分量

>[];

蓝色分量

>[];

}

}

找到图像象素起始位置

();

获取图像宽度

();

获取图像高度

();

计算图像每行的字节数

(*);

更换原色位图的每个象素的颜色索引

每行

(;<;)

{

每列

(;<;)

{

指向第行,第列的象素的指针

(*)*();

对色位图,其像素值是调色板索引值

对灰度图,索引值就等于其灰度值

映射调色板索引

*[*];

}

}

替换当前调色板为灰度调色板

>()>(,

()>);

设置脏标记

>();

实现新的调色板

(());

更新视图

>();

解除锁定

(()>());

恢复光标

();

}

*************************************************************************

*

*函数名称:

*

*()

*

*参数:

*

*指向源图像指针

*

*返回值:

*

*加入随机噪声操作成功返回,否则返回。

*

*说明:

*

*该函数用来对色位图和位真彩色位图进行加入随即噪声操作。

*

************************************************************************

()

{

图像宽度和高度

;

指向图像像素的指针

;

指向源图像的指针

;

循环变量

;

;

图像每行的字节数

;

指向图像信息头结构的指针

;

图像的颜色数

;

噪声

;

计算图像每行的字节数

();

计算图像的高度和宽度

();

();

找到图像像素的起始位置

();

计算图像的颜色数

();

计算图像每行的字节数

(*>);

生成伪随机种子

(()());

在图像中加噪

如果是色位图

()

{

(<)

{

(<)

{

随机的噪声值

();

指向源图像倒数第行,第个象素的指针

(*)*;

在像素值中加入噪声值

*()((()*())*);

}

}

}

如果是位真彩色位图

()

{

(<)

{

(<)

{

();

指向源图像倒数第行,第个象素的指针

(*)**;

在每个像素的分量中加入随机的噪声值

*()((()*())*);

*()((()*())*);

*()((()*())*);

}

}

}

如果既不是色位图也不是位真彩色位图,直接返回

{

("只支持色位图和位真彩色位图");

;

}

返回

;

}

*************************************************************************

*

*函数名称:

*

*()

*

*参数:

*

*指向源图像指针

*

*

*

*操作成功返回,否则返回。

*

*说明:

*

*该算法函数用来对色位图和位真彩色位图进行亮度调整操作。

*

************************************************************************

(,)

{

,;

*;

;

;

;

;

;

()

;

(*);

(!

;

();

()

{

(;<;)

{

>[](>[],,);

>[](>[],,);

>[](>[],,);

}

}

()

{

();

((>)*(>))

((>)*(>));

(;<>;)

{

(;<>;)

{

()*();

()*();

()*();

*(,,);

*(,,);

*(,,);

}

;

}

}

{

("只处理色和位位图");

;

}

;

}

*************************************************************************

*

*函数名称:

*

*()

*

*参数:

*

*指向源图像指针

*

*

*

*操作成功返回,否则返回。

*

*说明:

*

*该算法函数用来对色位图和位真彩色位图进行色调调整操作。

*

************************************************************************

(,,,)

{

,;

*;

;

;

;

;

;

()

;

(*);

(!

;

();

()

{

(;<;)

{

>[](>[],,);

>[](>[],,);

>[](>[],,);

}

}

()

{

();

((>)*(>))

((>)*(>));

(;<>;)

{

(;<>;)

{

()*();

()*();

()*();

*(,,);

*(,,);

*(,,);

}

;

}

}

{

("只处理色和位位图");

;

}

;

}

*************************************************************************

*

*函数名称:

*

*()

*

*参数:

*

*指向源图像指针

*

*

*

*操作成功返回,否则返回。

*

*说明:

*

*该算法函数用来对色位图和位真彩色位图进行对比度调整操作。

*

************************************************************************

(,)

{

,;

*;

;

;

;

;

;

()

;

(*);

(!

;

();

()

{

(;<;)

{

(>)

{

;

;

(()());

((>[]));

((>[]));

((>[]));

}

{

(*());

((>[]));

((>[]));

((>[]));

}

}

}

()

{

();

((>)*(>))

((>)*(>));

(;<>;)

{

(;<>;)

{

()*();

()*();

()*();

(>)

{

;

;

(()());

();

();

();

}

{

(*());

();

();

();

}

*;

*;

*;

}

;

}

}

{

("只处理色和位位图");

;

}

;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1