数字图像处理实验4报告

数字图像处理实验4报告
数字图像处理实验4报告

文档编号:2012301610066

版本号:001

编制人:郑琪

编制日期:2014.4.9

最后修改日期:2014.4.9 数字图像处理实验报告——图像常用格式及显示

武汉大学

2014.04

1实验内容

本实验报告主要介绍图像锐化及边缘检测。

1.1目的

本次实验的目标主要是为了:

1. 理解图像空间域锐化的目的和意义;

2. 了解图像空间域锐化的各种方法及优缺点;

3. 掌握图像空间域的邻域运算方法;

4. 掌握图像锐化处理算法及流程;

5. 进一步熟悉Visual C++

6.0下图像处理基本编程方法及图像局部处理方法;

6. 掌握Visual C++ 6.0中构建数据输入对话框方法;

7. 编程实现图像梯度锐化、Roberts锐化、Prewitt锐化、Sobel锐化、 Laplace锐化及高通滤波法;

8. 理解空间高通滤波法与其他各种图象锐化的区别和联系。

9. 总结实验过程(实验报告):编程、调试、结果、分析、结论。

1.2 主要代码注释

1.图像梯度锐化代码

/*************************************************************************

*

* 函数名称:

* GradSharp()

*

* 参数:

* unsigned char * lpDIBBits - 指向源DIB图像指针

* LONG lWidth - 源图像宽度(象素数)

* LONG lHeight - 源图像高度(象素数)

* BYTE bThre - 阈值

*

* 返回值:

* BOOL - 成功返回TRUE,否则返回FALSE。

*

* 说明:

* 该函数用来对图像进行梯度锐化。

*

************************************************************************/ BOOL WINAPI GradSharp(unsigned char *lpDIBBits, LONG lWidth, LONG lHeight, BYTE bThre)

{

// 指向源图像的指针

unsigned char* lpSrc;

unsigned char* lpSrc1;

unsigned char* lpSrc2;

// 循环变量

LONG i;

LONG j;

// 图像每行的字节数

LONG lLineBytes;

// 中间变量

BYTE bTemp;

// 计算图像每行的字节数

lLineBytes = (((lWidth * 8) + 31) / 32 * 4); // 每行字节

for(i = 0; i < lHeight; i++)

{

// 每列

for(j = 0; j < lWidth; j++)

{

// 指向DIB第i行,第j个象素的指针

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

// 指向DIB第i+1行,第j个象素的指针

lpSrc1 = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 2 - i) + j;

// 指向DIB第i行,第j+1个象素的指针

lpSrc2 = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j + 1;

bTemp = abs((*lpSrc)-(*lpSrc1)) + abs((*lpSrc)-(*lpSrc2));

// 判断是否小于阈值

if (bTemp < 255)

{

// 判断是否大于阈值,对于小于情况,灰度值不变。

if (bTemp >= bThre)

{

// 直接赋值为bTemp

*lpSrc = bTemp;

}

}

else

{

// 直接赋值为255

*lpSrc = 255;

}

}

}

// 返回

return TRUE;

}

void CZhengqiImageView::OnEnhaGradsharp()

{

// TODO: Add your command handler code here

// TODO: Add your command handler code here

// 梯度锐化

CZhengqiImageDoc* pDoc = GetDocument();

ASSERT_V ALID(pDoc);

unsigned char * pBits=pDoc->m_pBits;

int nWidth=pDoc->imageWidth;

int nHeight=pDoc->imageHeight;

int nColorBits = pDoc->m_nColorBits;

if (nColorBits != 8)

{

// 提示用户

MessageBox("目前只支持256色位图的梯度锐化!", "系统提示" ,

MB_ICONINFORMATION | MB_OK);

// 返回

return;

}

// 阈值

BYTE bThre=10;

// 更改光标形状

BeginWaitCursor();

// 调用GradSharp()函数进行梯度板锐化

if(::GradSharp(pBits, nWidth, nHeight, bThre))

{

// 设置脏标记

pDoc->SetModifiedFlag(TRUE);

// 更新视图

pDoc->UpdateAllViews(NULL);

}

else

{

// 提示用户

MessageBox("分配内存失败!", "系统提示" , MB_ICONINFORMA TION | MB_OK); }

// 恢复光标

EndWaitCursor();

}

https://www.360docs.net/doc/7616231303.html,place锐化代码

/************************************************************************* *

* 函数名称:

* Template()

*

* 参数:

* unsigned char * lpDIBBits - 指向源DIB图像指针

* LONG lWidth - 源图像宽度(象素数)

* LONG lHeight - 源图像高度(象素数)

* int iTempH - 模板的高度

* int iTempW - 模板的宽度

* int iTempMX - 模板的中心元素X坐标( < iTempW - 1)

* int iTempMY - 模板的中心元素Y坐标( < iTempH - 1)

* FLOAT * fpArray - 指向模板数组的指针

* FLOAT fCoef - 模板系数

*

* 返回值:

* BOOL - 成功返回TRUE,否则返回FALSE。

*

* 说明:

* 该函数用指定的模板(任意大小)来对图像进行操作,参数iTempH指定模板

* 的高度,参数iTempW指定模板的宽度,参数iTempMX和iTempMY指定模板的中心* 元素坐标,参数fpArray指定模板元素,fCoef指定系数。

*

************************************************************************/

BOOL WINAPI Template(unsigned char * lpDIBBits, LONG lWidth, LONG lHeight,

int iTempH, int iTempW,

int iTempMX, int iTempMY,

FLOAT * fpArray, FLOAT fCoef)

{

// 指向复制图像的指针

unsigned char * lpNewDIBBits;

// 指向源图像的指针

unsigned char* lpSrc;

// 指向要复制区域的指针

unsigned char* lpDst;

// 循环变量

LONG i;

LONG j;

LONG k;

LONG l;

// 计算结果

FLOAT fResult;

// 图像每行的字节数

LONG lLineBytes;

// 计算图像每行的字节数

lLineBytes = (((lWidth * 8) + 31) / 32 * 4);

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

lpNewDIBBits = new unsigned char[lLineBytes * lHeight] ;

// 判断是否内存分配失败

if (lpNewDIBBits == NULL)

{

// 分配内存失败

return FALSE;

}

// 初始化图像为原始图像

memcpy(lpNewDIBBits, lpDIBBits, lLineBytes * lHeight);

// 行(除去边缘几行)

for(i = iTempMY; i < lHeight - iTempH + iTempMY + 1; i++)

{

// 列(除去边缘几列)

for(j = iTempMX; j < lWidth - iTempW + iTempMX + 1; j++)

{

// 指向新DIB第i行,第j个象素的指针

lpDst = (unsigned char*)lpNewDIBBits + lLineBytes * (lHeight - 1 - i) + j;

fResult = 0;

// 计算

for (k = 0; k < iTempH; k++)

{

for (l = 0; l < iTempW; l++)

{

// 指向DIB第i - iTempMY + k行,第j - iTempMX + l个象素的指针

lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i + iTempMY - k)

+ j - iTempMX + l;

// 保存象素值

fResult += (* lpSrc) * fpArray[k * iTempW + l];

}

}

// 乘上系数

fResult *= fCoef;

// 取绝对值

fResult = (FLOAT ) fabs(fResult);

// 判断是否超过255

if(fResult > 255)

{

// 直接赋值为255

* lpDst = 255;

}

else

{

// 赋值

* lpDst = (unsigned char) (fResult + 0.5);

}

}

}

// 复制变换后的图像

memcpy(lpDIBBits, lpNewDIBBits, lLineBytes * lHeight);

delete lpNewDIBBits;

// 返回

return TRUE;

}

void CZhengqiImageView::OnEnhaSharp()

{

// TODO: Add your command handler code here

// 图像锐化

// 梯度锐化

CZhengqiImageDoc* pDoc = GetDocument();

ASSERT_V ALID(pDoc);

unsigned char * pBits=pDoc->m_pBits;

int nWidth=pDoc->imageWidth;

int nHeight=pDoc->imageHeight;

int nColorBits = pDoc->m_nColorBits;

if (nColorBits != 8)

{

// 提示用户

MessageBox("目前只支持256色位图的梯度锐化!", "系统提示" ,

MB_ICONINFORMATION | MB_OK);

// 返回

return;

}

// 模板高度

int iTempH;

// 模板宽度

int iTempW;

// 模板系数

FLOAT fTempC;

// 模板中心元素X坐标

int iTempMX;

// 模板中心元素Y坐标

int iTempMY;

// 模板元素数组

FLOAT aValue[9];

// 更改光标形状

BeginWaitCursor();

// 设置拉普拉斯模板参数

iTempW = 3;

iTempH = 3;

fTempC = 1.0;

iTempMX = 1;

iTempMY = 1;

aValue[0] = -1.0;

aValue[1] = -1.0;

aValue[2] = -1.0;

aValue[3] = -1.0;

aValue[4] = 9.0;

aValue[5] = -1.0;

aValue[6] = -1.0;

aValue[7] = -1.0;

aValue[8] = -1.0;

// 调用Template()函数用拉普拉斯模板锐化DIB

if (::Template(pBits, nWidth, nHeight,

iTempH, iTempW, iTempMX, iTempMY, aValue, fTempC)) {

// 设置脏标记

pDoc->SetModifiedFlag(TRUE);

// 更新视图

pDoc->UpdateAllViews(NULL);

}

else

{

// 提示用户

MessageBox("分配内存失败!", "系统提示" , MB_ICONINFORMA TION | MB_OK); }

// 恢复光标

EndWaitCursor();

}

3.SOBEL 边缘代码

/*************************************************************************

*

* 函数名称:

* SobelDIB()

*

* 参数:

* unsigned char * lpDIBBits - 指向源DIB图像指针

* LONG lWidth - 源图像宽度(象素数,必须是4的倍数)

* LONG lHeight - 源图像高度(象素数)

* 返回值:

* BOOL - 边缘检测成功返回TRUE,否则返回FALSE。

*

* 说明:

* 该函数用Sobel边缘检测算子对图像进行边缘检测运算。

*

* 要求目标图像为灰度图像。

************************************************************************/

BOOL WINAPI SobelDIB(unsigned char * lpDIBBits, LONG lWidth, LONG lHeight)

{

// 指向缓存图像的指针

unsigned char * lpDst1;

unsigned char * lpDst2;

lWidth= (((lWidth * 8) + 31) / 32 * 4);

// 指向缓存DIB图像的指针

unsigned char * lpNewDIBBits1;

unsigned char * lpNewDIBBits2;

//循环变量

long i;

long j;

// 模板高度

int iTempH;

// 模板宽度

int iTempW;

// 模板系数

FLOAT fTempC;

// 模板中心元素X坐标

int iTempMX;

// 模板中心元素Y坐标

int iTempMY;

//模板数组

FLOAT aTemplate[9];

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

lpNewDIBBits1 = new unsigned char[lWidth * lHeight];

if (lpNewDIBBits1 == NULL)

{

// 分配内存失败

return FALSE;

}

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

// 锁定内存

lpNewDIBBits2 = new unsigned char[lWidth * lHeight]; if (lpNewDIBBits2 == NULL)

{

// 分配内存失败

return FALSE;

}

// 拷贝源图像到缓存图像中

lpDst1 = lpNewDIBBits1;

memcpy(lpNewDIBBits1, lpDIBBits, lWidth * lHeight);

lpDst2 = lpNewDIBBits2;

memcpy(lpNewDIBBits2, lpDIBBits, lWidth * lHeight);

// 设置Sobel模板参数

iTempW = 3;

iTempH = 3;

fTempC = 1.0;

iTempMX = 1;

iTempMY = 1;

aTemplate[0] = -1.0;

aTemplate[1] = -2.0;

aTemplate[2] = -1.0;

aTemplate[3] = 0.0;

aTemplate[4] = 0.0;

aTemplate[5] = 0.0;

aTemplate[6] = 1.0;

aTemplate[7] = 2.0;

aTemplate[8] = 1.0;

// 调用Template()函数

if (!Template(lpNewDIBBits1, lWidth, lHeight,

iTempH, iTempW, iTempMX, iTempMY, aTemplate, fTempC)) {

return FALSE;

}

// 设置Sobel模板参数

aTemplate[0] = -1.0;

aTemplate[1] = 0.0;

aTemplate[2] = 1.0;

aTemplate[3] = -2.0;

aTemplate[4] = 0.0;

aTemplate[5] = 2.0;

aTemplate[6] = -1.0;

aTemplate[7] = 0.0;

aTemplate[8] = 1.0;

// 调用Template()函数

if (!Template(lpNewDIBBits2, lWidth, lHeight,

iTempH, iTempW, iTempMX, iTempMY, aTemplate, fTempC)) {

return FALSE;

}

//求两幅缓存图像的最大值

for(j = 0; j

{

for(i = 0;i

{

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

lpDst1 = lpNewDIBBits1 + lWidth * j + i;

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

lpDst2 = lpNewDIBBits2 + lWidth * j + i;

if(*lpDst2 > *lpDst1)

*lpDst1 = *lpDst2;

}

}

// 复制经过模板运算后的图像到源图像

memcpy(lpDIBBits, lpNewDIBBits1, lWidth * lHeight);

delete lpNewDIBBits2;

delete lpNewDIBBits1;

// 返回

return TRUE;

}

void CZhengqiImageView::OnEdgeSobel()

{

// TODO: Add your command handler code here

// 梯度锐化

CZhengqiImageDoc* pDoc = GetDocument();

ASSERT_V ALID(pDoc);

unsigned char * pBits=pDoc->m_pBits;

int nWidth=pDoc->imageWidth;

int nHeight=pDoc->imageHeight;

int nColorBits = pDoc->m_nColorBits;

if (nColorBits != 8)

{

// 提示用户

MessageBox("目前只支持256色位图的梯度锐化!", "系统提示" ,

MB_ICONINFORMATION | MB_OK);

// 返回

return;

}

//Sobel边缘检测运算

// 调用SobelDIB()函数对DIB进行边缘检测

if (SobelDIB(pBits, nWidth, nHeight))

{

// 设置脏标记

pDoc->SetModifiedFlag(TRUE);

// 更新视图

pDoc->UpdateAllViews(NULL);

}

else

{

// 提示用户

MessageBox("分配内存失败!", "系统提示" , MB_ICONINFORMA TION | MB_OK); }

// 恢复光标

EndWaitCursor();

}

4. PREWITT边缘代码

/*************************************************************************

*

* 函数名称:

* PREWITTDIB()

*

* 参数:

* unsigned char * lpDIBBits - 指向源DIB图像指针

* LONG lWidth - 源图像宽度(象素数,必须是4的倍数)

* LONG lHeight - 源图像高度(象素数)

* 返回值:

* BOOL - 边缘检测成功返回TRUE,否则返回FALSE。

*

* 说明:

* 该函数用Sobel边缘检测算子对图像进行边缘检测运算。

*

* 要求目标图像为灰度图像。

************************************************************************/

BOOL WINAPI PrewittDIB(unsigned char * lpDIBBits, LONG lWidth, LONG lHeight) {

// 指向缓存图像的指针

unsigned char * lpDst1;

unsigned char * lpDst2;

lWidth= (((lWidth * 8) + 31) / 32 * 4);

// 指向缓存DIB图像的指针

unsigned char * lpNewDIBBits1;

unsigned char * lpNewDIBBits2;

//循环变量

long i;

long j;

// 模板高度

int iTempH;

// 模板宽度

int iTempW;

// 模板系数

FLOAT fTempC;

// 模板中心元素X坐标

int iTempMX;

// 模板中心元素Y坐标

int iTempMY;

//模板数组

FLOAT aTemplate[9];

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

lpNewDIBBits1 = new unsigned char[lWidth * lHeight];

if (lpNewDIBBits1 == NULL)

{

// 分配内存失败

return FALSE;

}

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

// 锁定内存

lpNewDIBBits2 = new unsigned char[lWidth * lHeight];

if (lpNewDIBBits2 == NULL)

{

// 分配内存失败

return FALSE;

}

// 拷贝源图像到缓存图像中

lpDst1 = lpNewDIBBits1;

memcpy(lpNewDIBBits1, lpDIBBits, lWidth * lHeight);

lpDst2 = lpNewDIBBits2;

memcpy(lpNewDIBBits2, lpDIBBits, lWidth * lHeight);

// 设置Sobel模板参数

iTempW = 3;

iTempH = 3;

fTempC = 1.0;

iTempMX = 1;

iTempMY = 1;

aTemplate[0] = -1.0;

aTemplate[1] = -1.0;

aTemplate[2] = -1.0;

aTemplate[3] = 0.0;

aTemplate[4] = 0.0;

aTemplate[5] = 0.0;

aTemplate[6] = 1.0;

aTemplate[7] = 1.0;

aTemplate[8] = 1.0;

// 调用Template()函数

if (!Template(lpNewDIBBits1, lWidth, lHeight,

iTempH, iTempW, iTempMX, iTempMY, aTemplate, fTempC))

return FALSE;

}

// 设置Sobel模板参数

aTemplate[0] = -1.0;

aTemplate[1] = 0.0;

aTemplate[2] = 1.0;

aTemplate[3] = -1.0;

aTemplate[4] = 0.0;

aTemplate[5] = 1.0;

aTemplate[6] = -1.0;

aTemplate[7] = 0.0;

aTemplate[8] = 1.0;

// 调用Template()函数

if (!Template(lpNewDIBBits2, lWidth, lHeight,

iTempH, iTempW, iTempMX, iTempMY, aTemplate, fTempC)) {

return FALSE;

}

//求两幅缓存图像的最大值

for(j = 0; j

{

for(i = 0;i

{

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

lpDst1 = lpNewDIBBits1 + lWidth * j + i;

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

lpDst2 = lpNewDIBBits2 + lWidth * j + i;

if(*lpDst2 > *lpDst1)

*lpDst1 = *lpDst2;

}

}

// 复制经过模板运算后的图像到源图像

memcpy(lpDIBBits, lpNewDIBBits1, lWidth * lHeight);

delete lpNewDIBBits2;

delete lpNewDIBBits1;

// 返回

return TRUE;

}

void CZhengqiImageView::OnEdgePrewitt()

{

// TODO: Add your command handler code here

//Prewitt边缘检测运算

// 梯度锐化

CZhengqiImageDoc* pDoc = GetDocument();

ASSERT_V ALID(pDoc);

unsigned char * pBits=pDoc->m_pBits;

int nWidth=pDoc->imageWidth;

int nHeight=pDoc->imageHeight;

int nColorBits = pDoc->m_nColorBits;

if (nColorBits != 8)

{

// 提示用户

MessageBox("目前只支持256色位图的梯度锐化!", "系统提示" ,

MB_ICONINFORMATION | MB_OK);

// 返回

return;

}

//Sobel边缘检测运算

// 调用SobelDIB()函数对DIB进行边缘检测

if (PrewittDIB(pBits, nWidth, nHeight))

{

// 设置脏标记

pDoc->SetModifiedFlag(TRUE);

// 更新视图

pDoc->UpdateAllViews(NULL);

}

else

{

// 提示用户

MessageBox("分配内存失败!", "系统提示" , MB_ICONINFORMA TION | MB_OK); }

// 恢复光标

EndWaitCursor();

// TODO: Add your command handler code here

}

2.1 图像锐化的结果

2.2 Laplace锐化的结果

2.3 SOBEL 边缘提取的结果

2.4 PREWITT边缘提取的结果

数字图像处理实验1

实验一 实验内容和步骤 练习图像的读取、显示和保存图像数据,步骤如下: (1)使用命令figure(1)开辟一个显示窗口 (2)读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内显示、二值图像和灰度图像,注上文字标题。 (3)保存转换后的灰度图像和二值图像 (4)在同一个窗口显示转换后的灰度图像的直方图 I=imread('BaboonRGB.bmp'); figure,imshow(I); I_gray=rgb2gray(I); figure,imshow(I_gray); I_2bw=Im2bw(I_gray); figure,imshow(I_2bw); subplot(1,3,1),imshow(I),title('RGB图像'); subplot(1,3,2),imshow(I_gray),title('灰度图像'); subplot(1,3,3),imshow(I_2bw),title('二值图像'); imwrite(I_gray,'Baboongray.png'); imwrite(I_2bw,'Baboon2bw.tif'); figure;imhist(I_gray);

RGB 图 像灰度图 像二值图 像 050100150200250 500 1000 1500 2000 2500 3000

(5)将原RGB 图像的R 、G 、B 三个分量图像显示在figure(2)中,观察对比它们的特点,体会不同颜色所对应的R 、G 、B 分量的不同之处。 [A_RGB,MAP]=imread('BaboonRGB.bmp'); subplot(2,2,1),imshow(A_RGB),title('RGB'); subplot(2,2,2),imshow(A_RGB(:,:,1)),title('R'); subplot(2,2,3),imshow(A_RGB(:,:,2)),title('G'); subplot(2,2,4),imshow(A_RGB(:,:,3)),title('B'); (6)将图像放大1.5倍,插值方法使用三种不同方法,在figure(3)中显示放大后的图像,比较不同插值方法的结果有什么不同。将图像放大到其它倍数,重复实验;A=imread('BaboonRGB.bmp'); figure(3),imshow(A),title('原图像'); B=imresize(A,1.5,'nearest'); figure(4),imshow(B),title('最邻近法') C=imresize(A,1.5,'bilinear'); ; figure(5),imshow(C),title('双线性插值'); D=imresize(A,1.5,'bicubic'); figure(6),imshow(D),title('双三次插值 '); RGB R G B

武汉科技大学 数字图像处理实验报告

二○一四~二○一五学年第一学期电子信息工程系 实验报告书 班级:电子信息工程(DB)1102班姓名 学号: 课程名称:数字图像处理 二○一四年十一月一日

实验一图像直方图处理及灰度变换(2学时) 实验目的: 1. 掌握读、写、显示图像的基本方法。 2. 掌握图像直方图的概念、计算方法以及直方图归一化、均衡化方法。 3. 掌握图像灰度变换的基本方法,理解灰度变换对图像外观的改善效果。 实验内容: 1. 读入一幅图像,判断其是否为灰度图像,如果不是灰度图像,将其转化为灰度图像。 2. 完成灰度图像的直方图计算、直方图归一化、直方图均衡化等操作。 3. 完成灰度图像的灰度变换操作,如线性变换、伽马变换、阈值变换(二值化)等,分别使用不同参数观察灰度变换效果(对灰度直方图的影响)。 实验步骤: 1. 将图片转换为灰度图片,进行直方图均衡,并统计图像的直方图: I1=imread('pic.jpg'); %读取图像 I2=rgb2gray(I1); %将彩色图变成灰度图 subplot(3,2,1); imshow(I1); title('原图'); subplot(3,2,3); imshow(I2); title('灰度图'); subplot(3,2,4); imhist(I2); %统计直方图 title('统计直方图'); subplot(3,2,5); J=histeq(I2); %直方图均衡 imshow(J); title('直方图均衡'); subplot(3,2,6); imhist(J); title('统计直方图');

原 图 灰度图 01000 2000 3000统计直方图 100200直方图均衡 0统计直方图 100200 仿真分析: 将灰度图直方图均衡后,从图形上反映出细节更加丰富,图像动态范围增大,深色的地方颜色更深,浅色的地方颜色更前,对比更鲜明。从直方图上反应,暗部到亮部像素分布更加均匀。 2. 将图片进行阈值变换和灰度调整,并统计图像的直方图: I1=imread('rice.png'); I2=im2bw(I1,0.5); %选取阈值为0.5 I3=imadjust(I1,[0.3 0.9],[]); %设置灰度为0.3-0.9 subplot(3,2,1); imshow(I1); title('原图'); subplot(3,2,3); imshow(I2); title('阈值变换'); subplot(3,2,5); imshow(I3); title('灰度调整'); subplot(3,2,2); imhist(I1); title('统计直方图'); subplot(3,2,4);

数字图像处理实验报告

数字图像处理实验报告 实验一数字图像基本操作及灰度调整 一、实验目的 1)掌握读、写图像的基本方法。 2)掌握MATLAB语言中图像数据与信息的读取方法。 3)理解图像灰度变换处理在图像增强的作用。 4)掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方 法。 二、实验内容与要求 1.熟悉MATLAB语言中对图像数据读取,显示等基本函数 特别需要熟悉下列命令:熟悉imread()函数、imwrite()函数、size()函数、Subplot()函数、Figure()函数。 1)将MATLAB目录下work文件夹中的forest.tif图像文件读出.用到imread, imfinfo 等文件,观察一下图像数据,了解一下数字图像在MATLAB中的处理就是处理一个矩阵。将这个图像显示出来(用imshow)。尝试修改map颜色矩阵的值,再将图像显示出来,观察图像颜色的变化。 2)将MATLAB目录下work文件夹中的b747.jpg图像文件读出,用rgb2gray() 将其 转化为灰度图像,记为变量B。 2.图像灰度变换处理在图像增强的作用 读入不同情况的图像,请自己编程和调用Matlab函数用常用灰度变换函数对输入图像进行灰度变换,比较相应的处理效果。 3.绘制图像灰度直方图的方法,对图像进行均衡化处理 请自己编程和调用Matlab函数完成如下实验。 1)显示B的图像及灰度直方图,可以发现其灰度值集中在一段区域,用 imadjust函 数将它的灰度值调整到[0,1]之间,并观察调整后的图像与原图像的差别,调整后的灰

度直方图与原灰度直方图的区别。 2) 对B 进行直方图均衡化处理,试比较与源图的异同。 3) 对B 进行如图所示的分段线形变换处理,试比较与直方图均衡化处理的异同。 图1.1 分段线性变换函数 三、实验原理与算法分析 1. 灰度变换 灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。 1) 图像反转 灰度级范围为[0, L-1]的图像反转可由下式获得 r L s --=1 2) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围, 如直接使用原图,则一部分细节可能丢失。解决的方法是对原图进行灰度压缩,如对数变换: s = c log(1 + r ),c 为常数,r ≥ 0 3) 幂次变换: 0,0,≥≥=γγc cr s 4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求 局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸: 其对应的数学表达式为:

数字图像处理实验(全完整答案)

数字图像处理实验(全 完整答案)

实验一常用 MATLAB图像处理命令 一、实验目的 1 、熟悉并掌握MA TLAB 工具的使用; 2、实现图像的读取、显示、代数运算和简单变换。 二、实验环境 MATLAB 6.5 以上版本、WIN XP或W IN2000计算机 三、常用函数 读写图像文件 1 imread imread 函数用于读入各种图像文件,如:a=imread('e:\w01.tif') 2 imwrite imwrite 函数用于写入图像文件,如:imwrite(a,'e:\w02.tif', ’tif ’) 3 imfinfo imfinfo 函数用于读取图像文件的有关信息,如:imfinfo('e:\w01.tif')图像的显示 1 image image 函数是 MATLAB提供的最原始的图像显示函数,如: a=[1,2,3,4;4,5,6,7;8,9,10,11,12]; image(a); 2 imshow imshow 函数用于图像文件的显示,如: i=imread('e:\w01.tif'); imshow(i); title (‘原图像’) %加上图像标题

3 colorbar colorbar 函数用显示图像的颜色条,如: i=imread('e:\w01.tif'); imshow(i); colorbar; 4 figure figure 函数用于设定图像显示窗口,如:figure(1) ;/figure(2) ; 5 subplot 把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。 Subplot (m,n,p)分成 m*n个小窗口,在第p 个窗口中创建坐标轴为当 前坐标轴,用于显示图形。 6 plot 绘制二维图形 plot (y) Plot (x,y)xy 可以是向量、矩阵。 图像类型转换 1 rgb2gray 把真彩图像转换为灰度图像 i=rgb2gray (j ) 2 im2bw 通过阈值化方法把图像转换为二值图像 I=im2bw(j ,level ) Level 表示灰度阈值,取值范围0~1(即0.n ),表示阈值取自原图像灰度范围的n%

实验报告格式与要求

作业格式要求 一、作业题目 围绕如何学习信息安全专业课程,掌握专业知识等内容自拟题目并进行论述。 二、用纸、页面设置要求 作业应按规定格式用计算机打印,纸张大小一律使用A4复印纸,单面打印。 页面设置:每一面的上方(天头)和下方(地脚)应留边25mm左右,左侧(订口)和右侧(切口)应分别留边317mm左右。页码设置为:插入页码,居中。 三、作业内容打印要求 作业中所有标点符号必须是中文全角逗号、句号。 (一)目录 采用四号字,其中每章题目用黑体字,每节题目用宋体字,并注明各章节起始页码,题目和页码用“……”相连,如下所示: 目录(黑体小3号) (自然空一行) 第一章 XXXXXXXX ……………………………………………1 (黑体小4号) 1.1 XXXXXX ………………………………………………2 (宋体小4号) 1.1.1 XXXXX …………………………………………6 (宋体小4号) 第二章 XXXXXXXXXX ………………………………………40(黑体小4号)(二)正文字体要求 每章题目居中、黑体小三号;每节题目左顶边、宋体四号加黑;每小节题目左顶边、宋体小四号加黑。正文文字用宋体小四号汉字和小四号“Times New Roman”英文字体,每自然段首行缩进2个字符。 (三)行间距要求 每章题目与每节题目之间的行距设置:每章题目后设单倍行距,段后0.5 行。

每节题目与小节题目之间的行距设置:每节题目后设单倍行距,段后0.5 行。 正文行距设置:设多倍行距,设置值为1.25。 (四)正文章节序号编制 章,编写为:第一章,第二章…。 节,编写为:1. 1、1. 2…,2. 1、2. 2…。 小节,编写为:1. 1. 1, 1. 1. 2…。 小节以下层次,先以括号为序,如(1),(2)…;再以圈圈为序,如①, ②…。层次采用如下格式: 例如: 第一章 XXXXXXXX(黑体小三号)(单倍行距,段后0.5行) 1. 1 XXXXXXXX(宋体四号加黑)(单倍行距,段后0.5行) 1.1. 1 xxxxxx(宋体小四号加黑) (首行缩进2个字符)(1)xxxxx(小四号宋体) (首行缩进2个字符)① xxxxxx(小四号宋体) (下一章另起一页) 第二章 XXXXXXXX(黑体小三号)(单倍行距,段后0.5行) 2. 1 XXXXXXXX(宋体四号加黑)(单倍行距,段后0.5行) 2.1. 1 xxxxxx(宋体小四号加黑) (首行缩进2个字符)(1)xxxxx(宋体小四号) (首行缩进2个字符)① xxxxxx(宋体小四号) (五)报告的公式、图与表 公式号以章分组编号,如(2-4)表示第二章的第4个公式。 公式尽量采用公式编辑应用程序输入,选择默认格式,公式号右对齐,公式调整至基本居中。 图与表中的文字小于正文中的文字字号。 图与表以章分组编序号,如图3-5表示第三章的第5幅图。

东南大学数字图像处理实验报告

数字图像处理 实验报告 学号:04211734 姓名:付永钦 日期:2014/6/7 1.图像直方图统计 ①原理:灰度直方图是将数字图像的所有像素,按照灰度值的大小,统计其所出现的频度。 通常,灰度直方图的横坐标表示灰度值,纵坐标为半个像素个数,也可以采用某一灰度值的像素数占全图像素数的百分比作为纵坐标。 ②算法: clear all PS=imread('girl-grey1.jpg'); %读入JPG彩色图像文件figure(1);subplot(1,2,1);imshow(PS);title('原图像灰度图'); [m,n]=size(PS); %测量图像尺寸参数 GP=zeros(1,256); %预创建存放灰度出现概率的向量 for k=0:255 GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率end figure(1);subplot(1,2,2);bar(0:255,GP,'g') %绘制直方图 axis([0 255 min(GP) max(GP)]); title('原图像直方图') xlabel('灰度值') ylabel('出现概率') ③处理结果:

原图像灰度图 100 200 0.005 0.010.0150.020.025 0.030.035 0.04原图像直方图 灰度值 出现概率 ④结果分析:由图可以看出,原图像的灰度直方图比较集中。 2. 图像的线性变换 ①原理:直方图均衡方法的基本原理是:对在图像中像素个数多的灰度值(即对画面起主 要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并。从而达到清晰图像的目的。 ②算法: clear all %一,图像的预处理,读入彩色图像将其灰度化 PS=imread('girl-grey1.jpg'); figure(1);subplot(2,2,1);imshow(PS);title('原图像灰度图'); %二,绘制直方图 [m,n]=size(PS); %测量图像尺寸参数 GP=zeros(1,256); %预创建存放灰度出现概率的向量 for k=0:255

数字图像处理实验 实验二

实验二MATLAB图像运算一、实验目的 1.了解图像的算术运算在数字图像处理中的初步应用。 2.体会图像算术运算处理的过程和处理前后图像的变化。 二、实验步骤 1.图像的加法运算-imadd 对于两个图像f x,y和 (x,y)的均值有: g x,y=1 f x,y+ 1 (x,y) 推广这个公式为: g x,y=αf x,y+β (x,y) 其中,α+β=1。这样就可以得到各种图像合成的效果,也可以用于两张图像的衔接。说明:两个示例图像保存在默认路径下,文件名分别为'rice.png'和'cameraman.tif',要求实现下图所示结果。 代码: I1 = imread('rice.png'); I2 = imread('cameraman.tif'); I3 = imadd(I1, I2,'uint8'); I4 = imadd(I1, I2,'uint16'); subplot(2, 2, 1), imshow(I1), title('?-ê?í???1'); subplot(2, 2, 2), imshow(I2), title('?-ê?í???2'); subplot(2, 2, 3), imshow(I3), title('8??í?????ê?'); subplot(2, 2, 4), imshow(I4), title('16??í?????ê?'); 结果截图:

2.图像的减法运算-imsubtract 说明: 背景图像可通过膨胀算法得到background = imopen(I,strel('disk',15));,要求实现下图所示结果。 示例代码如下: I1 = imread('rice.png'); background = imerode(I1, strel('disk', 15)); rice2 = imsubtract(I1, background); subplot(2, 2, 1), imshow(I1), title('?-ê?í???'); subplot(2, 2, 2), imshow(background), title('±3?°í???'); subplot(2, 2, 3), imshow(rice2), title('′|àíoóμ?í???'); 结果截图: 3.图像的乘法运算-immultiply

数字图像处理实验报告

数字图像处理实验 报告 学生姓名:学号: 专业年级: 09级电子信息工程二班

实验一常用MATLAB图像处理命令 一、实验内容 1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。 实验结果如右图: 代码如下: Subplot (1,3,1) i=imread('E:\数字图像处理\2.jpg') imshow(i) title('RGB') Subplot (1,3,2) j=rgb2gray(i) imshow(j) title('灰度') Subplot (1,3,3) k=im2bw(j,0.5) imshow(k) title('二值') 2、对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。 实验结果如右图: 代码如下: Subplot (3,2,1) i=imread('E:\数字图像处理 \16.jpg') x=imresize(i,[250,320]) imshow(x) title('原图x') Subplot (3,2,2) j=imread(''E:\数字图像处理 \17.jpg') y=imresize(j,[250,320]) imshow(y) title('原图y') Subplot (3,2,3) z=imadd(x,y) imshow(z)

title('相加结果');Subplot (3,2,4);z=imsubtract(x,y);imshow(z);title('相减结果') Subplot (3,2,5);z=immultiply(x,y);imshow(z);title('相乘结果') Subplot (3,2,6);z=imdivide(x,y);imshow(z);title('相除结果') 3、对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。 实验结果如右图: 代码如下: Subplot (2,2,1) i=imread('E:\数字图像处理 \23.jpg') imshow(i) title('原图') Subplot (2,2,2) J = imadjust(i,[],[],3); imshow(J) title('变暗') Subplot (2,2,3) J = imadjust(i,[],[],0.4) imshow(J) title('变亮') Subplot (2,2,4) J=255-i Imshow(J) title('变负') 二、实验总结 分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。 解答:图像减运算与图像加运算的原理和用法类似,同样要求两幅图像X、Y的大小类型相同,但是图像减运算imsubtract()有可能导致结果中出现负数,此时系统将负数统一置为零,即为黑色。 乘运算实际上是对两幅原始图像X、Y对应的像素点进行点乘(X.*Y),将结果输出到矩阵Z中,若乘以一个常数,将改变图像的亮度:若常数值大于1,则乘运算后的图像将会变亮;叵常数值小于是,则图像将会会暗。可用来改变图像的灰度级,实现灰度级变换,也可以用来遮住图像的某些部分,其典型应用是用于获得掩膜图像。 除运算操作与乘运算操作互为逆运算,就是对两幅图像的对应像素点进行点(X./Y), imdivide()同样可以通过除以一个常数来改变原始图像的亮度,可用来改变图像的灰度级,其典型运用是比值图像处理。 加法运算的一个重要应用是对同一场景的多幅图像求平均值 减法运算常用于检测变化及运动的物体,图像相减运算又称为图像差分运算,差分运算还可以用于消除图像背景,用于混合图像的分离。

化学实验报告格式

化学实验报告格式 例一定量分析实验报告格式 (以草酸中h2c2o4含量的测定为例) 实验题目:草酸中h2c2o4含量的测定 实验目的: 学习naoh标准溶液的配制、标定及有关仪器的使用; 学习碱式滴定管的使用,练习滴定操作。 实验原理: h2c2o4为有机弱酸,其ka1=5.9×10-2,ka2=6.4×10-5。常量组分分析时cka1>10-8,cka2>10-8,ka1/ka2<105,可在水溶液中一次性滴定其两步离解的h+: h2c2o4+2naoh===na2c2o4+2h2o 计量点ph值8.4左右,可用酚酞为指示剂。 naoh标准溶液采纳间接配制法获得,以邻苯二甲酸氢钾标定: -cook -cooh +naoh=== -cook -coona +h2o 此反应计量点ph值9.1左右,同样可用酚酞为指示剂。 实验办法: 一、naoh标准溶液的配制与标定 用台式天平称取naoh1g于100ml烧杯中,加50ml蒸馏水,搅拌使其溶解。移入500ml试剂瓶中,再加200ml蒸馏水,摇匀。 准确称取0.4~0.5g邻苯二甲酸氢钾三份,分别置于250ml锥形瓶中,加20~30ml蒸馏水溶解,再加1~2滴0.2%酚酞指示剂,用naoh标准溶液滴定至溶液呈微红色,半分钟别褪色即为终点。 二、h2c2o4含量测定 准确称取0.5g左右草酸试样,置于小烧杯中,加20ml蒸馏水溶解,然后定量地转入100ml 容量瓶中,用蒸馏水稀释至刻度,摇匀。 用20ml移液管移取试样溶液于锥形瓶中,加酚酞指示剂1~2滴,用naoh标准溶液滴定至溶液呈微红色,半分钟别褪色即为终点。平行做三次。 实验数据记录与处理: 一、naoh标准溶液的标定 实验编号123备注 mkhc8h4o4 /g始读数

数字图像处理——彩色图像实验报告

6.3实验步骤 (1)对彩色图像的表达和显示 * * * * * * * * * * * *显示彩色立方体* * * * * * * * * * * * * rgbcube(0,0,10); %从正面观察彩色立方体 rgbcube(10,0,10); %从侧面观察彩色立方 rgbcube(10,10,10); %从对角线观察彩色立方体 %* * * * * * * * * *索引图像的显示和转换* * * * * * * * * * f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %rgb图像转换成8色索引图像,不采用抖动方式 [X1,map1]=rgb2ind(f,8,'nodither'); figure,imshow(X1,map1); %采用抖动方式转换到8色索引图像 [X2,map2]=rgb2ind(f,8,'dither'); figure,imshow(X2,map2); %显示效果要好一些 g=rgb2gray(f); %f转换为灰度图像 g1=dither(g);%将灰色图像经过抖动处理,转换打二值图像figure,imshow(g);%显示灰度图像 figure,imshow(g1);%显示抖动处理后的二值图像 程序运行结果:

彩色立方体原图 不采用抖动方式转换到8色索引图像采用抖动方式转换到8色索引图像 灰度图像抖动处理后的二值图像

(2)彩色空间转换 f=imread('D:\Picture\Fig0604(a)(iris).tif'); figure,imshow(f);%f是RGB真彩图像 %转换到NTSC彩色空间 ntsc_image=rgb2ntsc(f); figure,imshow(ntsc_image(:,:,1));%显示亮度信息figure,imshow(ntsc_image(:,:,2));%显示色差信息figure,imshow(ntsc_image(:,:,3));%显示色差信息 %转换到HIS彩色空间 hsi_image=rgb2hsi(f); figure,imshow(hsi_image(:,:,1));%显示色度信息figure,imshow(hsi_image(:,:,2)); %显示饱和度信息figure,imshow(hsi_image(:,:,3));%显示亮度信息 程序运行结果: 原图 转换到NTSC彩色空间

数字图像处理实验报告(完整版)

数字图像处理 实验一 MATLAB数字图像处理初步 一、显示图像 1.利用imread( )函数读取一幅图像,假设其名为lily.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 实验结果如下图: 源代码: >>I=imread('lily.tif') >> whos I >> imshow(I) 二、压缩图像 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为lily.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flily.bmp。7.用imread()读入图像Sunset.jpg和Winter.jpg; 8.用imfinfo()获取图像Sunset.jpg和Winter.jpg的大小; 9.用figure,imshow()分别将Sunset.jpg和Winter.jpg显示出来,观察两幅图像的质量。其中9的实验结果如下图:

源代码: 4~6(接上面两个) >>I=imread('lily.tif') >> imfinfo 'lily.tif'; >> imwrite(I,'lily.jpg','quality',20); >> imwrite(I,'lily.bmp'); 7~9 >>I=imread('Sunset.jpg'); >>J=imread('Winter.jpg') >>imfinfo 'Sunset.jpg' >> imfinfo 'Winter.jpg' >>figure(1),imshow('Sunset.jpg') >>figure(2),imshow('Winter.jpg') 三、二值化图像 10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。实验结果如下图: 源代码: >> I=imread('lily.tif') >>gg=im2bw(I,0.4); F>>igure, imshow(gg)

实验报告标准范本_4

报告编号:LX-FS-A55866 实验报告标准范本 The Stage T asks Completed According T o The Plan Reflect The Basic Situation In The Work And The Lessons Learned In The Work, So As T o Obtain Further Guidance From The Superior. 编写:_________________________ 审批:_________________________ 时间:________年_____月_____日 A4打印/ 新修订/ 完整/ 内容可编辑

实验报告标准范本 使用说明:本报告资料适用于按计划完成的阶段任务而进行的,反映工作中的基本情况、工作中取得的经验教训、存在的问题以及今后工作设想的汇报,以取得上级的进一步指导作用。资料内容可按真实状况进行条款调整,套用时请仔细阅读。 一、实验目的及要求: 本实例是要创建边框为1像素的表格。 二、仪器用具 1、生均一台多媒体电脑,组建内部局域网,并且接入国际互联网。 2、安装windows xp操作系统;建立iis服务器环境,支持asp。 3、安装网页三剑客(dreamweaver mx;flash mx;fireworks mx)等网页设计软件; 4、安装acdsee、photoshop等图形处理与制作软件;

5、其他一些动画与图形处理或制作软件。 三、实验原理 创建边框为1像素的表格。 四、实验方法与步骤 1) 在文档中,单击表格“”按钮,在对话框中将“单元格间距”设置为“1”。 2) 选中插入的表格,将“背景颜色”设置为“黑色”(#0000000)。 3) 在表格中选中所有的单元格,在“属性”面版中将“背景颜色”设置为“白色”(#ffffff)。 4) 设置完毕,保存页面,按下“f12”键预览。 五、实验结果 六、讨论与结论 本实验主要通过整个表格和单元格颜色的差异来衬托出实验效果,间距的作用主要在于表现这种颜色

数字图像处理实验报告

数字图像处理试验报告 实验二:数字图像的空间滤波和频域滤波 姓名:XX学号:2XXXXXXX 实验日期:2017 年4 月26 日 1.实验目的 1. 掌握图像滤波的基本定义及目的。 2. 理解空间域滤波的基本原理及方法。 3. 掌握进行图像的空域滤波的方法。 4. 掌握傅立叶变换及逆变换的基本原理方法。 5. 理解频域滤波的基本原理及方法。 6. 掌握进行图像的频域滤波的方法。 2.实验内容与要求 1. 平滑空间滤波: 1) 读出一幅图像,给这幅图像分别加入椒盐噪声和高斯噪声后并与前一张图显示在同一 图像窗口中。 2) 对加入噪声图像选用不同的平滑(低通)模板做运算,对比不同模板所形成的效果,要 求在同一窗口中显示。 3) 使用函数 imfilter 时,分别采用不同的填充方法(或边界选项,如零填 充、’replicate’、’symmetric’、’circular’)进行低通滤波,显示处理后的图 像。 4) 运用 for 循环,将加有椒盐噪声的图像进行 10 次,20 次均值滤波,查看其特点, 显 示均值处理后的图像(提示:利用fspecial 函数的’average’类型生成均值滤波器)。 5) 对加入椒盐噪声的图像分别采用均值滤波法,和中值滤波法对有噪声的图像做处理,要 求在同一窗口中显示结果。 6) 自己设计平滑空间滤波器,并将其对噪声图像进行处理,显示处理后的图像。 2. 锐化空间滤波 1) 读出一幅图像,采用3×3 的拉普拉斯算子 w = [ 1, 1, 1; 1 – 8 1; 1, 1, 1] 对其进行滤波。 2) 编写函数w = genlaplacian(n),自动产生任一奇数尺寸n 的拉普拉斯算子,如5 ×5的拉普拉斯算子 w = [ 1 1 1 1 1 1 1 1 1 1 1 1 -24 1 1 1 1 1 1 1 1 1 1 1 1] 3) 分别采用5×5,9×9,15×15和25×25大小的拉普拉斯算子对

数字图像处理实验

《数字图像处理》 实验报告 学院:信息工程学院 专业:电子信息工程 学号: 姓名: 2015年6月18日

目录 实验一图像的读取、存储和显示 (2) 实验二图像直方图分析 (6) 实验三图像的滤波及增强 (15) 实验四噪声图像的复原 (19) 实验五图像的分割与边缘提取 (23) 附录1MATLAB简介 (27)

实验一图像的读取、存储和显示 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格式图像。 2.熟练掌握在MATLAB中如何读取图像。 3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。 4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。 5.图像的显示。 二、实验原理 一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。图像关于x和y坐标以及振幅连续。要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。将坐标值数字化成为取样;将振幅数字化成为量化。采样和量化的过程如图1所示。因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。 三、实验设备 (1) PC计算机 (2) MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox) (3) 实验所需要的图片 四、实验内容及步骤 1.利用imread( )函数读取一幅图像,假设其名为flower.tif,存入一个数组中; 2.利用whos 命令提取该读入图像flower.tif的基本信息; 3.利用imshow()函数来显示这幅图像; 4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息; 5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件设为flower.jpg语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。 6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。 7.用imread()读入图像:Lenna.jpg 和camema.jpg; 8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小;

数字图像处理实验 2017

实验一 Matlab图像基本操作 一、实验目的 熟悉利用Matlab进行图像处理的基本操作,了解图像数据的存储形式及进行图像处理编程的步骤方法。 二、实验内容 1、图像读写与显示 重点函数:imread, imwrite, imshow 2、彩色图像灰度化 计算公式:Y = R*0.299 + G*0.587 + B*0.114 3、图像马赛克 局部平均,改变窗口大小比较处理结果,如取2×2、4×4或更大尺寸的窗口 4、图像平移 分别完成图像水平方向、竖直方向和两个方向的平移 三、实验要求 1、编写代码,完成各项实验内容 2、总结实验中遇到问题及解决方案,书写实验报告 实验二图像点运算 一、实验目的 理解图像灰度变换和直方图的概念,掌握灰度变换和直方图均衡化的原理及实现方法。 二、实验内容 1、线性灰度变换 2、非线性变换 =,修改指数γ观察图像效果,总结指数项γ合理取值的一般规律 s crγ 3、直方图 绘制直方图,观察图像效果与直方图的关系 4、直方图均衡化 利用直方图均衡化确定灰度变换关系,画出变换曲线及图像处理前后的直方图 三、实验要求 1、编写代码,完成各项实验内容 2、总结实验中遇到问题及解决方案,书写实验报告

实验三邻域运算 一、实验目的 1.巩固对图像增强的认识,明确图像空域处理的类型 2.理解图像平滑与图像锐化的概念 3.掌握图像模板卷积运算的实现方法 4.锻炼编程开发图像处理算法的能力 二、实验准备 1.了解图像处理点运算和邻域运算的区别 2.学习利用模板卷积的方法进行图像邻域运算 3.复习均值滤波和中值滤波的原理 4.列出常用的模板形式,思考中值滤波要用到的简单排序方法 5.分析对比图像平滑和图像锐化模板的差异 三、实验内容与步骤 1.列出常用的卷积模板 2.基于3×3的模板,编写均值滤波的处理程序,处理含有加性高斯噪声和椒盐噪声的图像,观察处理结果 3.编写中值滤波程序,处理相同的图像与均值滤波进行比较;改变模板尺寸观察处理结果 4.编程实现利用一阶微分算子和二阶拉普拉斯算子进行图像锐化的程序 5.对比不同的邻域运算结果,体会图像锐化与图像平滑的区别 四、实验报告与思考题 1.总结实验内容及步骤方法完成实验报告,报告中要求有关键代码的注释说明及程序运行和图像处理结果 2.实验报告中回答以下问题 (1)均值滤波和中值滤波分别适用于处理哪类图像? (2)图像平滑和图像锐化所采用的模板有什么不同? (3)邻域运算的模板尺寸对处理结果有什么影响?

实验报告评语

实验报告评语 1、书写认真,干净。实验步骤清晰 2、书写整齐,实验数据真实,明确 3、书写杂乱, 4、实验目的明确,经过数据分析等到的结果很好 5、实验过程有些乱,但总体还好 6、实验设计合理,数据正确 7、通过这份实验报告,可以看出你能很好的完成实验 8、看了这份实验报告,可以看出你对知识的掌握很好 9、通过实验报告,可以看出你严谨的实验态度 学校班级 组别姓名 实验题目:氧气的实验室制取及其化学性质 实验用品:铁架台、大试管、带导管的单孔橡胶塞、集气瓶、水槽、毛玻璃片、药匙、酒精灯、火柴、高锰酸钾、木炭、澄清的石灰水、脱脂棉、水、细木条、剩余药品的回收容器。 实验过程:按照实验内容和步骤完成实验,并将表格中空格部分补充完整。 1 2 学校班级 组别姓名 实验题目:燃烧的条件

实验用品:酒精灯、蜡烛、玻璃棒、玻璃片、火柴、纸盒、小木条、水、坩埚钳、剩余药品的回收容器。 实验过程:按照实验内容和步骤完成实验,并将表格中空格部分补充完整。 3 4 学校班级 组别姓名 实验题目:质量守恒定律 实验用品:托盘天平、砝码、烧杯、镊子、CuSO4溶液、铁钉、砂纸、剩余药品的回收容器。 实验过程:按照实验内容和步骤完成实验,并将表格中空格部分补充完整。 石家庄铁道大学 实验报告 课程名称:管理信息系统任课教师: 陈艳春实验日期: 班级: 姓名:学号: 第 1 页共 4 页 第 2 页共 4 页 第 3 页共 4 页 第 4 页共 4 页 1、书写认真,干净。实验步骤清晰 2、书写整齐,实验数据真实,明确 3、书写杂乱, 4、实验目的明确,经过数据分析等到的结果很好 5、实验过程有些乱,但总体还好 6、实验设计合理,数据正确

数字图像处理实验一

数字图像处理—实验一 一.实验内容: 图像灰度变换 二.实验目的: 学会用Matlab软件对图像灰度进行变换;感受各种不同的灰度变换方法对最终图像效果的影响。 三.实验步骤: 1.获取实验用图像:rice.jpg. 使用imread函数将图像读入Matlab。 程序: clc;clear; figure; subplot(4,4,1); i = imread('rice.png'); i = im2double(i); imshow(i);title('1'); 2.产生灰度变换函数T1,使得: 0.3r r < 0.35 s = 0.105 + 2.6333(r – 0.35) 0.35 ≤r ≤0.65

1 + 0.3(r – 1) r > 0.65 用T1对原图像rice.jpg进行处理,使用imwrite函数保存处理后的新图像。程序: subplot(4,4,2); r=[0:0.001:1]; s=[r<0.35].*r*0.3+[r<=0.65].*[r>=0.35].*(0.105+2.6333*(r-0.35))+[r>0.65].*(1 +0.3*(r-1)); plot(r,s);title('2p'); subplot(4,4,3); T1=[i<0.35].*i*0.3+[i<=0.65].*[i>=0.35].*(0.105+2.6333*(i-0.35))+[i>0.65].*( 1+0.3*(i-1)); imshow(T1);title('2i'); imwrite(T1,'rice_T1.jpg','jpg');

3.产生灰度变换函数T2,使得: 用T2对原图像rice.jpg进行处理,使用imwrite保存处理后的新图像。 %3 subplot(4,4,4); r = [0:0.001:1];

实验报告纸格式

实验报告纸格式

肇庆学院 肇庆学院学院电子电工课实验报告 12 年级机械4 班组实验日期 姓名老师评定 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 实验题目实验二射极跟随器 一、实验目的 1、掌握射极跟随器的特性及测试方法 2、进一步学习放大器各项参数测试方法 二、实验原理 射极跟随器的原理图如图5-1所示。它是一个电压串联负反馈放大电路,它具有输入电阻高,输出电阻低,电压放大倍数接近于1,输出电压能够在较大范围内跟随 输入电压作线性变化以及输入、输出信号同相等特点。 图5-1 射极跟随器 射极跟随器的输出取自发射极,故称其为射极输出器。 1、输入电阻R i 图5-1电路 R i =r be +(1+β)R E 如考虑偏置电阻R B 和负载R L 的影响,则 R i =R B ∥[r be +(1+β)(R E ∥R L )] 由上式可知射极跟随器的输入电阻R i 比共射极单管放大器的输入电阻R i =R B ∥r be 要高得多,但由于偏置电阻R B 的分流作用,输入电阻难以进一步提高。

输入电阻的测试方法同单管放大器,实验线路如图5-2所示。 图5-2 射极跟随器实验电路 R U U U I U R i s i i i i -== 即只要测得A 、B 两点的对地电位即可计算出R i 。 2、输出电阻R O 图5-1电路 β r R ∥βr R be E be O ≈= 如考虑信号源内阻R S ,则 β ) R ∥(R r R ∥β)R ∥(R r R B S be E B S be O +≈+= 由上式可知射极跟随器的输出电阻R 0比共射极单管放大器的输出电阻R O ≈R C 低得多。三极管的β愈高,输出电阻愈小。 输出电阻R O 的测试方法亦同单管放大器,即先测出空载输出电压U O ,再测接入负载R L 后的输出电压U L ,根据 O L O L L U R R R U += 即可求出 R O L L O O 1)R U U ( R -= 3、电压放大倍数 图5-1电路

相关文档
最新文档