数字图像处理C++ MFCWord文档下载推荐.docx

上传人:b****6 文档编号:21293544 上传时间:2023-01-29 格式:DOCX 页数:18 大小:1.16MB
下载 相关 举报
数字图像处理C++ MFCWord文档下载推荐.docx_第1页
第1页 / 共18页
数字图像处理C++ MFCWord文档下载推荐.docx_第2页
第2页 / 共18页
数字图像处理C++ MFCWord文档下载推荐.docx_第3页
第3页 / 共18页
数字图像处理C++ MFCWord文档下载推荐.docx_第4页
第4页 / 共18页
数字图像处理C++ MFCWord文档下载推荐.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数字图像处理C++ MFCWord文档下载推荐.docx

《数字图像处理C++ MFCWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字图像处理C++ MFCWord文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。

数字图像处理C++ MFCWord文档下载推荐.docx

二.实验目的和意义:

本实验的目的是熟悉并掌握图像处理编程环境,掌握图像平移、镜像、旋转等几何变换的方法,并能通过程序设计实现图像文件的读、写操作,及图像平移、镜像、旋转等几何变换的程序实现。

三.实验主要步骤:

1、在txclView.h中的protected:

下加入核心代码:

CDC*mypDC;

CBitmap*bitmap;

2、添加虚拟函数

通过操作在CtclView中点击鼠标右键,然后再选中AddvirtualFunction

双击后再选中onlnitialUpdate添加建立即可,建立成功后编写代码。

核心代码为:

voidCTxclView:

:

OnInitialUpdate()

{

CView:

OnInitialUpdate();

mypDC=newCDC;

bitmap=newCBitmap;

bitmap->

LoadBitmap(IDB_BITMAP3);

CDC*pDC=GetDC();

mypDC->

CreateCompatibleDC(pDC);

SelectObject(bitmap);

}

3、加入位图

将待处理的照片格式转化成bmp格式,具体转化过程可借助画图工具完成,插入后的结果为:

4、添加各种功能按钮,并建立类向导,添加完成后的界面为:

(1)图片的显示

voidCTxclView:

Ontuxiang()

//TODO:

Addyourcommandhandlercodehere

BITMAPbmp;

GetBitmap(&

bmp);

CDC*pDC=GetDC();

COLORREFclr;

intx=bmp.bmWidth;

inty=bmp.bmHeight;

for(inti=0;

i<

y;

++i)

{

for(intj=0;

j<

x;

++j)

{

clr=mypDC->

GetPixel(j,i);

intr=GetRValue(clr);

intg=GetGValue(clr);

intb=GetBValue(clr);

pDC->

SetPixel(j,i,RGB(r,g,b));

}

}

结果为:

(2)图像的简单灰度处理、逆反处理以、减小灰度处理、霓虹处理、增加灰度处理:

A、灰度处理核心代码:

Onhuidu()

inteva=(r+g+b)/3;

SetPixel(j,i,RGB(eva,eva,eva));

B、逆反处理核心代码:

Onnifan()

intr=255-GetRValue(clr);

intg=255-GetGValue(clr);

intb=255-GetBValue(clr);

SetPixel(j+300,i,RGB(r,g,b));

C、减小灰度处理核心代码:

Onjianxiaohuidu()

BITMAPbmp;

intr=GetRValue(clr)*GetRValue(clr)/255;

intg=GetGValue(clr)*GetRValue(clr)/255;

intb=GetBValue(clr)*GetRValue(clr)/255;

SetPixel(j+600,i,RGB(r,g,b));

D、图形的霓虹处理核心代码:

Onnihong()

intr,g,b;

COLORREFclra;

COLORREFclrb;

COLORREFclrc;

clra=mypDC->

clrb=mypDC->

GetPixel(j,i+1);

clrc=mypDC->

GetPixel(j+1,i);

r=(int)sqrt((GetRValue(clra)-GetRValue(clrb))*(GetRValue(clra)-GetRValue(clrb))+(GetRValue(clra)-GetRValue(clrc))*(GetRValue(clra)-GetRValue(clrc)));

g=(int)sqrt((GetRValue(clra)-GetRValue(clrb))*(GetRValue(clra)-GetRValue(clrb))+(GetRValue(clra)-GetRValue(clrc))*(GetRValue(clra)-GetRValue(clrc)));

b=(int)sqrt((GetRValue(clra)-GetRValue(clrb))*(GetRValue(clra)-GetRValue(clrb))+(GetRValue(clra)-GetRValue(clrc))*(GetRValue(clra)-GetRValue(clrc)));

pDC->

SetPixel(j,i+300,RGB(r,g,b));

}

E、图形增大灰度处理核心代码:

OnZenghuidu()

intr=sqrt((GetRValue(clr)/255))*255;

intg=sqrt((GetRValue(clr)/255))*255;

SetPixel(j+300,i+300,RGB(r,g,b));

图像的简单灰度处理、逆反处理以、减小灰度处理、霓虹处理、增加灰度处理结果对比:

(3)图像的镜像变换

A、垂直镜像变换的核心代码

Onchuizhijx()

GetPixel(x-j,i);

SetPixel(j+300,i,RGB(r,g,b));

B、水平镜像变换的核心代码

Onshuipingjx()

BITMAPbmp;

GetPixel(j,y-i);

}

垂直镜像变换、水平镜像变换与原图对比结果:

(4)图像的锐化处理

A、图像梯度增加方法一锐化处理核心代码:

OnTiDuZengqiangyi()

//intb=GetBValue(clra);

intr=abs(GetRValue(clra)-GetRValue(clrb))+abs(GetRValue(clra)-GetRValue(clrc));

SetPixel(j,i,RGB(r,r,r));

B、图像梯度增加方法二锐化处理核心代码:

OnTiDuZengEr()

COLORREFclrb;

COLORREFclra;

if(r<

=50)

r=GetRValue(clra);

SetPixel(j+300,i,RGB(r,r,r));

C、图像梯度增加方法一锐化处理核心代码:

OnTiduZengSan()

if(r>

50)

r=0;

else

r=GetRValue(clra);

SetPixel(j+600,i,RGB(r,r,r));

D、Sobel算子锐化处理核心代码:

OnSobelSuanZi()

CDC*pDC=GetDC();

COLORREFclra,clrb,clrc;

COLORREFclra1,clrb1,clrc1;

COLORREFclra2,clrb2;

GetPixel(j-1,i+1);

GetPixel(j+1,i+1);

clra1=mypDC->

GetPixel(j-1,i-1);

clrb1=mypDC->

GetPixel(j,i-1);

clrc1=mypDC->

GetPixel(j+1,i-1);

clra2=mypDC->

clrb2=mypDC->

GetPixel(j-1,i);

intm=

abs(GetRValue(clra)+2*GetRValue(clrb)+GetRValue(clrc)-GetRValue(clra1)-2*GetRValue(clrb1)-GetRValue(clrc1));

intn=

abs(GetRValue(clrc1)+2*GetRValue(clra2)+GetRValue(clrc)-GetRValue(clra1)-2*GetRValue(clrb2)-GetRValue(clra));

intr=m+n;

SetPixel(j,i+300,RGB(r,r,r));

四种锐化处理结果为:

(5)旋转变化

采用的是45度角旋转正变换,核心代码为:

OnXuanZHuanZheng()

intm=j*cos(45)+i*sin(45);

intn=-j*sin(45)+i*cos(45);

clr=mypDC->

intr=GetRValue(clr);

intg=GetGValue(clr);

intb=GetBValue(clr);

SetPixel(m,n+300,RGB(r,g,b));

SetPixel(m+1,n+300,RGB(r,g,b));

SetPixel(m,n+1+300,RGB(r,g,b));

旋转结果为:

(6)各种处理后的结果为:

四、实验总结

通过本次实验培养了我独立思考、综合运用所学有关相应知识的能力,强化上机动手编程能力,闯过理论与实践相结合的难关!

在这次编程实现简单的图像处理中,虽然总体不是太难,但还是遇到了一些小问题,也让我学到了很多,让我知道了动手能力有待进一步的提高!

在实验过程中必须将书本上的知识与实践相结合,一定要学以致用,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实,做什么都不是给别人看的!

都是要更好的掌握该门知识,提高自己的自身的修养,提高自己的能力!

为以后的工作打下良好的知识基础和技能基础!

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

当前位置:首页 > 高等教育 > 工学

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

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