图像增强实验.docx

上传人:b****8 文档编号:10115463 上传时间:2023-02-08 格式:DOCX 页数:17 大小:1.51MB
下载 相关 举报
图像增强实验.docx_第1页
第1页 / 共17页
图像增强实验.docx_第2页
第2页 / 共17页
图像增强实验.docx_第3页
第3页 / 共17页
图像增强实验.docx_第4页
第4页 / 共17页
图像增强实验.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

图像增强实验.docx

《图像增强实验.docx》由会员分享,可在线阅读,更多相关《图像增强实验.docx(17页珍藏版)》请在冰豆网上搜索。

图像增强实验.docx

图像增强实验

数字图像处理实验报告

1-图像增强

 

学生姓名:

学号:

实验时间:

地点:

指导教师:

实验名称:

图像增强

试验目的

(1)MATLAB中的实验验证。

通过在MATLAB环境中相关函数的调用,验证图像增强的结果,增强感性认识,促进对课程内容的理解。

(2)通过编写C++程序。

进一步理解算法的实现过程,为在实际项目软件中的应用打下基础。

实验内容

(1)MATLAB中的实验验证

1灰度线性变换,利用imadjust等

2直方图均衡化,利用histeq等

3基于模版的平滑滤波验,证各种滤波模板对椒盐噪声的滤波效果。

filter2,imfilter等函数。

4中值滤波,验证对中值滤波椒盐噪声的滤波效。

medfilt2等函数。

5图像锐化。

验证图像锐化效果。

edge,filter2,gradient等函数。

(2)c语言直方图均衡化编程

用VC++编写程序,将自己的YUV格式的照片转换成灰度图像,并进行直方图均衡化处理,结果存放到res.yuv文件。

后附参考程序代码。

实验记录与结果分析:

(1)①利用imadjust函数来实现灰度的线性化。

先读出图像finley.jpg,然后调用matlab函数imadjust,实现灰度线性化。

程序详见附录1.1,调整结果如下:

调整前:

调整后:

由此可见视觉效果得到明显改善。

②利用histeq函数实现直方图均衡化。

先读出图像finley.jpg,然后调用matlab函数histeq,实现直方图均衡化,最后在显示图像。

程序详见附录1.2。

其图像变化结果和直方图如下:

均衡前:

均衡后:

由此可见,直方图均衡化后,图像均匀性得到了很好的改善。

③基于模版的平滑滤波验。

先读出图像finley.jpg,然后调用matlab函数imnoise给图像加上高斯白噪声(为什么加高斯白噪声,因为这种噪声最常见),用书上的P116页的相关模板,构造滤波器来实现相关滤波。

程序详见附录1.3.结果如下:

原图像:

 

加过噪声以及滤波图像如下:

④中值滤波。

先读出图像finley.jpg,然后调用matlab函数imnoise给图像加上高斯白噪声,再通过中值滤波函数medfilt2来给图像进行中值滤波。

程序详见1.4.结果如下:

⑤图像锐化。

先读出图像finley.jpg,然后调用matlab函数edge对图像进行边缘锐化。

程序详见附录1.5.结果如下:

(2)c语言直方图均衡化编程。

根据公式以及理论对图像的均衡化进行C语言的实现,首先把finley.jpg转成finley.yuv格式然后对文件读取,处理,最后放回原文件。

程序详见2。

结果如下:

处理前:

处理后:

实验小结

本次实验可谓是收货颇多,我不仅学会了用matlab简单的处理数字图像,还会用c语言创建exe软件了并且能自己做一些简单的图像处理并把它做成想要的软件,如果再加以学习,就可以成功的编出像Photoshop一样的软件,在这高速发展的社会能掌握这样的技能还是非常不错的。

附录(源程序等)

程序1.1:

%====读出图像finley.jpg====%

i=imread('E:

\电力\数字图像处理\实验\实验二\finley.jpg');

i=rgb2gray(i);%转成灰度图像

figure

(1);

subplot(121)

imshow(i);%显示原图像

subplot(122)

imhist(i);%画出频率分布直方图

j=imadjust(i,[0.3,0.7],[]);%图像的均衡化调整

figure

(2)

subplot(121)

imshow(j);%画出均衡化调整之后的图像

subplot(122)

imhist(j)%画出调整之后的频率分布直方图

程序1.2:

%====读出图像finley.jpg====%

i=imread('E:

\电力\数字图像处理\实验\实验二\finley.jpg');

i=rgb2gray(i);%转成灰度图像

j=histeq(i);%直方图的均衡化

%======均衡化之前的图像======%

subplot(121)

imshow(i);

subplot(122)

imhist(i);

%=====均衡化之后的图像====%

figure

(2);

subplot(121);

imshow(j);

subplot(122)

imhist(j);

程序1.3:

%====读出图像finley.jpg====%

i=imread('E:

\电力\数字图像处理\实验\实验二\finley.jpg');

i=rgb2gray(i);%转成灰度图像

figure

(1)

imshow(i);

I=imnoise(i,'gaussian');%给图像见高斯白噪声

%定义相关模板

h0=1/9.*[111;111;111];

h1=1/10.*[111;121;111];

h2=1/16.*[121;242;121];

h3=1/8.*[111;101;111];

h4=1/2.*[01/40;1/411/4;01/40];

%用上述模板进行滤波

g0=imfilter(I,h0);

g1=imfilter(I,h1);

g2=imfilter(I,h2);

g3=imfilter(I,h3);

g4=imfilter(I,h4);

%画图显示

figure

(2)

subplot(231)

imshow(I);

title('噪声图像')

subplot(232)

imshow(g0);

title('平滑滤波')

subplot(233)

imshow(g1);

title('h1模板处理结果')

subplot(234)

imshow(g2);

title('高斯模板处理结果')

subplot(235)

imshow(g3);

title('h3模板处理结果')

subplot(236)

imshow(g4);

title('用h4模板处理结果')

程序1.4:

%====读出图像finley.jpg====%

i=imread('E:

\电力\数字图像处理\实验\实验二\finley.jpg');

i=rgb2gray(i);%转成灰度图像

I=imnoise(i,'gaussian');%给图像见高斯白噪声

k=medfilt2(I);%中值滤波

%画图像

subplot(121)

imshow(I);

title('噪声图像');

subplot(122);

imshow(k);

title('中值滤波后图像');

程序1.5:

%====读出图像finley.jpg====%

i=imread('E:

\电力\数字图像处理\实验\实验二\finley.jpg');

i=rgb2gray(i);%转成灰度图像

BW=edge(i,'roberts',0.1);%求罗伯茨梯度

figure;imshow(BW);

title('图像锐化');

程序2:

(其中黑体部分是程序功能部分其他为建立对话框的辅助部分)

//adjustDlg.cpp:

implementationfile

//

#include"stdafx.h"

#include"adjust.h"

#include"adjustDlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CAboutDlgdialogusedforAppAbout

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

//DialogData

//{{AFX_DATA(CAboutDlg)

enum{IDD=IDD_ABOUTBOX};

//}}AFX_DATA

//ClassWizardgeneratedvirtualfunctionoverrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupport

//}}AFX_VIRTUAL

//Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

//Nomessagehandlers

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CAdjustDlgdialog

CAdjustDlg:

:

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

:

CDialog(CAdjustDlg:

:

IDD,pParent)

{

//{{AFX_DATA_INIT(CAdjustDlg)

//NOTE:

theClassWizardwilladdmemberinitializationhere

//}}AFX_DATA_INIT

//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32

m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

voidCAdjustDlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAdjustDlg)

//NOTE:

theClassWizardwilladdDDXandDDVcallshere

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAdjustDlg,CDialog)

//{{AFX_MSG_MAP(CAdjustDlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BUTTON1,adjust)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CAdjustDlgmessagehandlers

BOOLCAdjustDlg:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

//Add"About..."menuitemtosystemmenu.

//IDM_ABOUTBOXmustbeinthesystemcommandrange.

ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX<0xF000);

CMenu*pSysMenu=GetSystemMenu(FALSE);

if(pSysMenu!

=NULL)

{

CStringstrAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if(!

strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);

}

}

//Settheiconforthisdialog.Theframeworkdoesthisautomatically

//whentheapplication'smainwindowisnotadialog

SetIcon(m_hIcon,TRUE);//Setbigicon

SetIcon(m_hIcon,FALSE);//Setsmallicon

//TODO:

Addextrainitializationhere

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

}

voidCAdjustDlg:

:

OnSysCommand(UINTnID,LPARAMlParam)

{

if((nID&0xFFF0)==IDM_ABOUTBOX)

{

CAboutDlgdlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog:

:

OnSysCommand(nID,lParam);

}

}

//Ifyouaddaminimizebuttontoyourdialog,youwillneedthecodebelow

//todrawtheicon.ForMFCapplicationsusingthedocument/viewmodel,

//thisisautomaticallydoneforyoubytheframework.

voidCAdjustDlg:

:

OnPaint()

{

if(IsIconic())

{

CPaintDCdc(this);//devicecontextforpainting

SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);

//Centericoninclientrectangle

intcxIcon=GetSystemMetrics(SM_CXICON);

intcyIcon=GetSystemMetrics(SM_CYICON);

CRectrect;

GetClientRect(&rect);

intx=(rect.Width()-cxIcon+1)/2;

inty=(rect.Height()-cyIcon+1)/2;

//Drawtheicon

dc.DrawIcon(x,y,m_hIcon);

}

else

{

CDialog:

:

OnPaint();

}

}

//Thesystemcallsthistoobtainthecursortodisplaywhiletheuserdrags

//theminimizedwindow.

HCURSORCAdjustDlg:

:

OnQueryDragIcon()

{

return(HCURSOR)m_hIcon;

}

voidCAdjustDlg:

:

adjust()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

unsignedchar*pic_from=NULL,*pic_to=NULL;

intw=352,h=288,Pixels=w*h,ImgBytes=Pixels*1.5;

doublen[256]={0.0},N=Pixels;

doublep[256]={0.0};

doubles[256]={0.0};

doubler[256]={0};

inti,k;

FILE*fp_from=fopen("C:

\\finley","rb");

FILE*fp_to=fopen("C:

\\finley_adjust","wb");

pic_from=(unsignedchar*)malloc(ImgBytes);

pic_to=(unsignedchar*)malloc(ImgBytes);

//从文件读取

fread(pic_from,1,ImgBytes,fp_from);

//-->n,0~N

for(i=0;i

{

k=pic_from[i];

n[k]++;

}

//-->p0~1

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

{

p[k]=n[k]/N;

}

s[0]=p[0];

for(k=1;k<256;k++)

{

s[k]=s[k-1]+p[k];

}

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

{

r[k]=(int)(s[k]*255+0.5);

}

memset(pic_to,127,ImgBytes);

for(i=0;i

{

k=pic_from[i];

pic_to[i]=r[k];

}

fwrite(pic_to,1,ImgBytes,fp_to);

if(pic_from)

free(pic_from);

if(pic_to)

free(pic_to);

if(fp_from)

fclose(fp_from);

if(fp_to)

fclose(fp_to);

}

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

当前位置:首页 > 医药卫生 > 药学

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

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