实验报告材料图像锐化.docx

上传人:b****6 文档编号:7983209 上传时间:2023-01-27 格式:DOCX 页数:10 大小:964.25KB
下载 相关 举报
实验报告材料图像锐化.docx_第1页
第1页 / 共10页
实验报告材料图像锐化.docx_第2页
第2页 / 共10页
实验报告材料图像锐化.docx_第3页
第3页 / 共10页
实验报告材料图像锐化.docx_第4页
第4页 / 共10页
实验报告材料图像锐化.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

实验报告材料图像锐化.docx

《实验报告材料图像锐化.docx》由会员分享,可在线阅读,更多相关《实验报告材料图像锐化.docx(10页珍藏版)》请在冰豆网上搜索。

实验报告材料图像锐化.docx

实验报告材料图像锐化

数字图像处理(2015年春季学期)

序号:

8

实验报告

 

系别:

计算机科学与技术

班级:

计算机12-1

依力夏提江·艾买尔

学号:

12101020129

实验名称:

图像锐化

总成绩:

评语:

 

日期:

《图像信息处理》实验报告

实验名称

图像锐化

实验序号

3

实验日期

2015.5.25

实验人

依力夏提江·哎买尔

一、实验目的、要求与环境

1.目的:

通过实验,了解数字图象锐化的一般方法,掌握图象锐化的编程方法,了解常见图象锐化效果的评价规则。

2.要求:

将给定的图像进行锐化处理,要求首先将彩色图像灰度化,再使用锐化算法进行锐化,最后将图像二值化处理,分析锐化后的视觉效果,提交实验报告。

锐化的算法不限,可采用Sobel、Roberts、Priwitt、Laplacian、Wallis等的一种或几种。

实验将根据图像锐化的难度、种类、代码量与实验效果进行评分。

3.环境:

Windows7操作系统

MicrosoftVisualStudio2005(VS2005)

自带图像文件:

L1

.bmp:

 

二、实验步骤

 

1.准备相关图像文件。

2.在Win7操作系统上,打开MicrosoftVisualStudio2005,编写相关程序,完成程序主体框架结构。

3.编写图像锐化的彩色图像灰度化,Sobel算法锐化,图像二值化处理相关的程序代码。

4.对程序进行相关调试,修改程序,去除其中的BUG。

5.利用自己准备的图像的文件和编写的程序,进行图像锐化处理。

6.截屏,保留实验结果,进行实验结果分析,并撰写实验报告。

 

三、相关背景知识

(写你自己觉得比较重要的与本实验相关的背景知识)

在边缘检测中,常用的一种模板是Sobel算子。

Sobel算子有两个,一个是检测水平边缘的;另一个是检测垂直边缘的。

与Prewitt算子相比,Sobel算子对于象素的位置的影响做了加权,可以降低边缘模糊程度,因此效果更好。

Sobel算子另一种形式是各向同性Sobel(IsotropicSobel)算子,也有两个,一个是检测水平边缘的,另一个是检测垂直边缘的。

各向同性Sobel算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。

将Sobel算子矩阵中的所有2改为根号2,就能得到各向同性Sobel的矩阵。

由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效,因此应用广泛。

美中不足的是,Sobel算子并没有将图像的主体与背景严格地区分开来,换言之就是Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。

在观测一幅图像的时候,我们往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解是最优的。

 

四、编译与执行过程截图

(下面是一个例子,换上你自己的图)

 

六、实验结果与分析

(下面是一个例子,换上你自己的图)

图像锐化:

源图:

灰度化:

 

再经过Sobel算法锐化:

再经过二值化后:

实验结果分析:

如上几个图像所示,之所以可以从人物、背景中提取出轮廓,是因为轮廓部分的信息较强,因此,如果设定一个阀值,当图中小雨阀值的点(即灰度图中灰度变化较弱的点,被认为是非边界点)置为黑,将图于阀值的点置为白,则可得到上图,这就把人物的边缘信息提取出来了。

在本实验的图像锐化过程中,所采用的公式为:

Sobel边缘检测算法

索贝尔算子(Sobeloperator)主要用作边缘检测,在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值。

在图像的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量

 Sobel卷积因子为:

 该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。

如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像灰度值,其公式如下:

 

 具体计算如下:

Gx=(-1)*f(x-1,y-1)+0*f(x,y-1)+1*f(x+1,y-1)

     +(-2)*f(x-1,y)+0*f(x,y)+2*f(x+1,y)

     +(-1)*f(x-1,y+1)+0*f(x,y+1)+1*f(x+1,y+1)

=[f(x+1,y-1)+2*f(x+1,y)+f(x+1,y+1)]-[f(x-1,y-1)+2*f(x-1,y)+f(x-1,y+1)]

 Gy=1*f(x-1,y-1)+2*f(x,y-1)+1*f(x+1,y-1)

     +0*f(x-1,y)0*f(x,y)+0*f(x+1,y)

     +(-1)*f(x-1,y+1)+(-2)*f(x,y+1)+(-1)*f(x+1,y+1)

=[f(x-1,y-1)+2f(x,y-1)+f(x+1,y-1)]-[f(x-1,y+1)+2*f(x,y+1)+f(x+1,y+1)]

 其中f(a,b), 表示图像(a,b)点的灰度值;

 图像的每一个像素的横向及纵向灰度值通过以下公式结合,来计算该点灰度的大小:

 

七、主要相关程序源代码

7.1彩色图像灰度化

voidCBMPEdit:

:

Gray()

{

pImageData=(byte*)GlobalLock(m_hgImageData);

lWidth=m_BmpInfo.bmiHeader.biWidth;

lHeight=m_BmpInfo.bmiHeader.biHeight;

for(intj=0;j

{

for(inti=0;i

{

//灰度化临时值

temp=double(*(pImageData+j*nBytePerLine+i*3+0))*0.299+

double(*(pImageData+j*nBytePerLine+i*3+1))*0.587+

double(*(pImageData+j*nBytePerLine+i*3+2))*0.114;

//三通道图转到单通道

*(pImageData+j*nBytePerLine+i*3+0)=int(temp);

*(pImageData+j*nBytePerLine+i*3+1)=int(temp);

*(pImageData+j*nBytePerLine+i*3+2)=int(temp);

}

}

GlobalUnlock(m_hgImageData);

}

7.2Sobel锐化

intCBMPEdit:

:

Sharpening()

{

lWidth=m_BmpInfo.bmiHeader.biWidth;

lHeight=m_BmpInfo.bmiHeader.biHeight;

//分配存,以保存新DIB

hDIB=GlobalAlloc(GHND,nBytePerLine*lHeight);

//判断是否存分配失败

if(hDIB==NULL)

{

//分配存失败

returnNULL;

}

pImageDataNew=(byte*)GlobalLock(hDIB);

//Sobel算法

for(intj=1;j

{

for(inti=1;i

{

gx=gy=0;

val11=*(pImageData+(j-1)*nBytePerLine+(i-1)*3);

val12=*(pImageData+(j-1)*nBytePerLine+i*3);

val13=*(pImageData+(j-1)*nBytePerLine+(i+1)*3);

val21=*(pImageData+j*nBytePerLine+(i-1)*3);

val22=*(pImageData+j*nBytePerLine+i*3);

val23=*(pImageData+j*nBytePerLine+(i+1)*3);

val31=*(pImageData+(j+1)*nBytePerLine+(i-1)*3);

val32=*(pImageData+(j+1)*nBytePerLine+i*3);

val33=*(pImageData+(j+1)*nBytePerLine+(i+1)*3);

//图像的每一个像素的横向及纵向梯度近似值。

gx=(-1.0)*val31+0*val32+1.0*val33

+(-2.0)*val21+0*val22+2.0*val23

+(-1.0)*val11+0*val12+1.0*val13;

 

gy=(-1.0)*val31+(-2.0)*val32+(-1.0)*val33

+0*val21+0*val22+0*val32

+1.0*val11+2.0*val12+1.0*val13;

 

//计算梯度的大小

Sobel=sqrt(gx*gx+gy*gy);

*(pImageDataNew+j*nBytePerLine+i*3+0)=int(Sobel);

*(pImageDataNew+j*nBytePerLine+i*3+1)=int(Sobel);

*(pImageDataNew+j*nBytePerLine+i*3+2)=int(Sobel);

}

}

GlobalUnlock(hDIB);

}

 

7.3图像二值化处理

voidCBMPEdit:

:

Binarization()

{

//像素值大于复制为,小于等于复制为

for(intj=0;j

{

for(inti=0;i

{

if(int(*(pImageDataNew+j*nBytePerLine+i*3))>80)

{

*(pImageDataNew+j*nBytePerLine+i*3+0)=255;

*(pImageDataNew+j*nBytePerLine+i*3+1)=255;

*(pImageDataNew+j*nBytePerLine+i*3+2)=255;

}

else

{

*(pImageDataNew+j*nBytePerLine+i*3+0)=0;

*(pImageDataNew+j*nBytePerLine+i*3+1)=0;

*(pImageDataNew+j*nBytePerLine+i*3+2)=0;

}

}

}

}

八、实验的总结与收获

(写你们自己各自的总结与收获)

在进行Sobel锐化时,使用的图像数据不是每次进行计算后的像素数据,而是原灰度化的数据,所以我将灰度化的数据又存了一份,这个地方出现了逻辑错误。

 

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

当前位置:首页 > 解决方案 > 学习计划

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

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