数字图像处理课堂实Word格式.docx

上传人:b****6 文档编号:18946043 上传时间:2023-01-02 格式:DOCX 页数:20 大小:5.24MB
下载 相关 举报
数字图像处理课堂实Word格式.docx_第1页
第1页 / 共20页
数字图像处理课堂实Word格式.docx_第2页
第2页 / 共20页
数字图像处理课堂实Word格式.docx_第3页
第3页 / 共20页
数字图像处理课堂实Word格式.docx_第4页
第4页 / 共20页
数字图像处理课堂实Word格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数字图像处理课堂实Word格式.docx

《数字图像处理课堂实Word格式.docx》由会员分享,可在线阅读,更多相关《数字图像处理课堂实Word格式.docx(20页珍藏版)》请在冰豆网上搜索。

数字图像处理课堂实Word格式.docx

第一次实验实习补充内容

利用matlab读取BMP图像(二值图像、灰度图像、索引色图像、真彩色图像),掌握BMP图像数据结构特征。

三、实习步骤:

1、利用以下命令读取图像,注意修改图像文件路径:

[fid1,mesage1]=fopen('

E:

\matlab_workspace\jxtux\cameraman-s.bmp'

'

r'

);

data1=fread(fid1);

fileinfo1=imfinfo('

bmp'

img1=imread('

[fid2,mesage2]=fopen('

\matlab_workspace\jxtux\canoe-s.bmp'

data2=fread(fid2);

fileinfo2=imfinfo('

img2=imread('

[fid3,mesage3]=fopen('

\matlab_workspace\jxtux\circles-s.bmp'

data3=fread(fid3);

fileinfo3=imfinfo('

img3=imread('

[fid4,mesage4]=fopen('

\matlab_workspace\jxtux\fabric-s.bmp'

data4=fread(fid4);

fileinfo4=imfinfo('

img4=imread('

[fid5,mesage5]=fopen('

\matlab_workspace\jxtux\forest-s.bmp'

data5=fread(fid5);

fileinfo5=imfinfo('

img5=imread('

2、根据BMP文件存储格式观察data,fileinfo,img数据内容,理解BMP格式存储特征。

2.1文件头结构及其各组分内容

针对二值图像、灰度图像、索引色图像、真彩色图像分析比较文件类型、文件大小、偏移量等的异同。

2.2文件信息头结构及其各组分内容

针对二值图像、灰度图像、索引色图像、真彩色图像分析比较文图信息头长度、位图长度高度大小、位平面、像素位数、压缩类型等位图信息头内容的异同。

2.3调色板内容及其组分内容

2.3.1调色板的结构

2.3.2调色板的内容

2.3.3二值图像、灰度图像、索引色图像、真彩色图像的调色板内容的差别

2.4位图数据内容

2.4.1二值图像、灰度图像、索引色图像、真彩色图像的位图数据内容

2.4.2及图像数据保存到位图数据结构是从下向上,从左向右存储的特征

3、了解图像数据是如何保存到位图文件中的

3.1图像数据的长高大小是32的倍数

3.2图像数据的长高大小不是32的倍数

3.3位图像素值对存储的影响

实验项目二编写图像灰度直方图统计程序

掌握图像直方图计算的基本原理,编写图像灰度直方图统计程序。

使用VC++编写图像灰度直方图统计计算程序。

三、算法原理及实现

1、算法原理

灰度直方图反应的是一幅图像中各灰度级像素出现的频率之间的关系。

以灰度级为横坐标,纵坐标为灰度级的频率,绘制频率同灰度级的关系图就是直方图。

频率的计算式为:

式中:

是图像中灰度为

的像素数,

为图像的总像素数。

2、算法实现

//设置直线原图象象素的指针

unsignedchar*lpSrc;

//循环变量

inti,j;

//获取绘制直方图的标签

CWnd*pWnd=GetDlgItem(IDC_DLG_HIST_SHOW);

//计算得到直方图

//图象的高度和宽度

CSizesizeImage;

sizeImage=m_pDib->

GetDimensions();

//获得图象数据存储的高度和宽度

CSizesizeSaveImage;

sizeSaveImage=m_pDib->

GetDibSaveDim();

//重置计数为0

for(i=0;

i<

256;

i++)

{

//清零

m_nHist[i]=0;

}

//计算各个灰度值的计数,即得到直方图

sizeImage.cy;

for(j=0;

j<

sizeImage.cx;

j++)

{

lpSrc=(unsignedchar*)m_pDib->

m_lpImage+sizeSaveImage.cx*i+j;

//计数加1

m_nHist[*(lpSrc)]++;

}

returnTRUE;

//returnTRUEunlessyousetthefocustoacontrol

//EXCEPTION:

OCXPropertyPagesshouldreturnFALSE

四、算法处理结果

五、各模块程序清单

1、CDlgHistShow:

:

CDlgHistShow(CWnd*pParent/*=NULL*/)

:

CDialog(CDlgHistShow:

IDD,pParent)

2、voidCDlgHistShow:

DoDataExchange(CDataExchange*pDX)

3、BOOLCDlgHistShow:

OnInitDialog()

4、voidCDlgHistShow:

OnPaint()

实验项目三图像增强处理

掌握数字图像增强的基本原理和方法,并能运用Photoshop软件对图像进行增强操作。

比较不同方法图像增强的效果,分析这些增强方法的特点。

应用Photoshop软件对图像作灰度拉伸、对比度增强、直方图均衡、图像平滑、中值滤波、边缘增强、伪彩色增强、假彩色合成等。

1、灰度拉伸:

线形拉伸:

在“图像→调整→色阶”中,可以通过直接设置原图像灰度值的输入范围和所需的输出范围来简单的完成某一灰度段到另一灰度段的灰度调整映射变换。

②曲线拉伸:

在“图像→调整→曲线”中,在弹出的“曲线”对话框中,直接用鼠标拖动改变灰度输入、输出曲线的形状就可以完成任意线形的灰度变换。

2、对比度增强:

对比度增强可以通过“图像→调整→亮度/对比度”来直接对原图像的亮度或对比度进行调整,观察增强处理前后图像直方图的变化。

3、直方图均衡

直方图均衡可调用“图像→调整→色调均化”菜单项,即可达到直方图均衡的效果。

4、图像平滑

①图像的3×

3均匀平滑可以在“滤镜→模糊→模糊”中实现,观察处理前后图像细节和边缘的变化;

也可以调用“模糊”对话框中的“高斯模糊”来观察高斯平滑处理的结果,改变半径,观察图像的变化,分析高斯平滑处理的原理。

②通过“滤镜→其它→自定”菜单项调出模板对话框,可以输入自定义的平滑算子或其它增强算子,改变模板的大小和缩放比例,观察处理的效果。

5、中值滤波

①先使用“滤镜→杂色→添加杂色”菜单添加噪声,再使用“滤镜—杂色—中间值”中值滤波操作,设置滤波半径,观察处理结果;

②采用“添加杂色”菜单项中的均匀噪声和高斯噪声给图像添加噪声,分别使用中值滤波和均匀平滑,观察这两种处理的效果,比较它们的异同。

6、边缘增强

①使用“滤镜→锐化→锐化边缘”,观察图像边缘的变化,也可以使用使用“USM锐化”,“进一步锐化”等其它锐化方法。

②使用“滤镜→其它→自定”调出模板对话框,使用教材中讲到的Laplace增强算子和高通滤波算子或自定义的算子,比较它们的处理效果。

7、边缘检测

①使用“滤镜→风格化”的“查找边缘”,“等高线”,“照亮边缘”等可以提取图像的边缘,改变参数,提取图像的最佳边缘。

②使用“滤镜→其它→自定”,输入教材讲述的边缘检测算子,分析处理的效果,比较这些算子的特点。

8、彩色增强技术

①密度分割:

打开一幅灰度(黑白)图像,使用“图像→模式→RGB颜色”将图像更改成真彩色模式,再使用“图像→调整→色调分离”对话框,输入密度分割的灰度级数(1-255),使用“图像→模式→索引颜色”将图像改成索引模式,使用“图像→模式→颜色表”对为每个灰度级定义一种颜色。

空间域变换彩色合成:

将一幅灰度图象采用三种不同变换,得到三幅灰度图象,然后选择“图像→调整→通道混合器”,将三幅图象进行RGB彩色合成,形成一幅伪彩色图像。

假彩色合成:

假彩色图像合成是对一幅自然色彩图像或多光谱图像通过映射函数变换成新的三基色分量,使增强图像呈现出与原图像不同的彩色。

打开一幅真彩色图像,选择“图像→调整→通道混合器”,设置对话框中的参数,观察处理后图像的变化。

四、图像处理结果

1、线性拉伸

2、曲线拉伸

3、对比度增强

4、直方图均衡

5、图像平滑

6、中值滤波

7、边缘增强

实验项目四灰度图像对比度线性拉伸

掌握灰度图像线性变换的基本原理,编写灰度图像对比度线性拉伸程序。

使用VC++编写灰度图像对比度线性拉伸程序。

当x<

x1:

f(x)=y1/x1*x;

当x1<

=x<

=x2:

f(x)=(y2-y1)/(x2-x1)*(x-x1)+y1;

当x>

x2:

f(x)=(255-y2)/(255-x2)*(x-x2)+y2;

//其中x1,y1,x2,y2是图中ac,bd两个转折点的坐标。

inti=0;

for(i=0;

i<

=x1;

i++)

if(x1>

0)

bMap[i]=(BYTE)y1*i/x1;

else

bMap[i]=0;

for(;

=x2;

if(x2!

=x1)

bMap[i]=y1+(BYTE)(y2-y1)*(i-x1)/(x2-x1);

bMap[i]=y1;

256;

if(x1!

=255)

bMap[i]=y2+(BYTE)(255-y2)*(i-x2)/(255-x2);

bMap[i]=255;

for(inti=0;

iPixelHeight;

for(intj=0;

j<

iPixelWidth;

j++)

//指向像素数据的第i行,第j列/个像素的指针

lpSrc=(unsignedchar*)lpDIBBits+lLineBytes*(lHeight-1-i)+j;

lpSrc=bMap[lpSrc]

处理前后图片:

1、voidCMainFrame:

AssertValid()

2、CMainFrame:

CMainFrame()

3、CMainFrame:

~CMainFrame()

4、voidCMainFrame:

Dump(CDumpContext&

dc)

5、CMainFrame:

OnCreate(LPCREATESTRUCTlpCreateStruct)

6、BOOLCMainFrame:

PreCreateWindow(CREATESTRUCT&

cs)

实验项目五灰度图像二值化程序编写

掌握二值图像的概念与应用,加深对图像分割的理解,提高学生图像分析与处理能力。

利用VC++读取BMP图像,利用状态法(峰谷法)编程实现灰度图像分割。

认真完成实验内容,撰写实验报告

图像的二值化处理就是将图像上的点的灰度置为0或255,也就是使整个图像呈现出明显的黑白效果。

即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。

//根据阈值将图像二值化

i<

lWidth;

i++)

for(j=0;

j<

lHeight;

j++)

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

lpSrc=(char*)lpDIBBits+lLineBytes*j+i;

//指向目标图像倒数第j行,第i个象素的指针

lpDst=(char*)lpNewDIBBits+lLineBytes*j+i;

pixel=(unsignedchar)*lpSrc;

if(pixel<

=iThreshold)

*lpDst=(unsignedchar)0;

*lpDst=(unsignedchar)255;

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

当前位置:首页 > 自然科学

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

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