1、班级: 数字图像处理实验时间:200 年 月 日实验小组:第 组组长:组员:组员:指导教师签名:实验情况评定:实验五 图像增强(2)实验目的:通过实验掌握下列知识: 1、学习常见的图像增强的方法并实际体会图像增强前后画质的变化;2、了解几种不同增强方式用于不同图像处理所取得的效果(削波处理和阈值化处理);3、初步掌握简单算法的代码实现的方法;4、初步了解MFC的一些初步编程技巧;内容及步骤一、通过VC实现一个削波处理:1、继续按照前几节的实验课介绍的方法,建立一个ImageProcessing Wizard工程;2、利用试验三和实验四介绍的方法,通过CBmp类读入“数字图像处理实验”文件夹中的
2、“样品.bmp”,并相应在各消息函数里添加必须的代码;3、在上述代码中间添加图形增强的代码,应该注意:读取的是彩色图形,所以在进行削波处理时,也必须应针对每一个基色分别进行削波处理;4、削波处理的参数:a=0,b=210;5、运行并观察运行结果;二、通过VC实现一个阈值化处理:1、 步骤1与上一个实验相同,仍旧是针对“数字图像处理实验”文件夹中的“样品.bmp”,这个实验是进行图形的阈值化处理;2、利用前面介绍的方法,通过CBmp类读入“数字图像处理实验”文件夹中的“样品.bmp”,并相应在各消息函数里添加必须的代码;3、 应该注意:读取的是彩色图形,所以在进行灰度窗口变换时,应该先将彩色图象
3、转换为灰度图象,然后再进行阈值化处理;4、阈值化处理的参数:a=175;5、运行并观察运行结果;注:结构rgb有一个成员函数graylevel可以进行彩色图象的灰度变换,代码例子如下: struct rgb tx = bmp1-pImageDataj*bmp1-nWidth+i; double grayx = tx.graylevel();实验报告要求:1、 记录你编写的削波处理实验代码,同时观察并纪录经过削波处理的效果;实验代码:void CMy5Dlg:OnOK() double a=0,b=210,mf=230,mg=220;/ TODO: Add extra validation he
4、refor(int i=0; inWidth; i+)for(int j=0; jnHeight; j+) struct rgb tx;tx = bmp1-pImageDataj*bmp1-nWidth+i; if(tx.red=0)tx.red=mg/b*tx.red;else if(b=tx.red) tx.red=(mg/(mf-b)*tx.red;if(tx.grn=0)tx.grn=mg/b*tx.red;else if(b=tx.grn) tx.grn=(mg/(mf-b)*tx.grn;if(tx.blu=0)tx.blu=mg/b*tx.blu;else if(b=tx.blu
5、) tx.blu=(mg/(mf-b)*tx.blu;/tx.grn=(d-c)/(b-a)*(tx.grn-a)+c; /tx.blu=(d-c)/(b-a)*(tx.blu-a)+c;/int x=(tx.red+tx.grn+tx.blu)/3;pDC-SetPixel(i, j, RGB(tx.red,tx.grn, tx.blu);/ TODO: Add extra validation here2、 记录你编写的阈值化处理的实验代码。void CMy5Dlg:OnOK() double a=175,mf=220,mg=230;/ TODO: Add extra validation
6、 herefor(int i=0; inWidth; i+)for(int j=0; jnHeight; j+) struct rgb tx;tx = bmp1-pImageDataj*bmp1-nWidth+i; double grayx = tx.graylevel(); if(grayxa)tx.red=0; tx.grn=0; tx.blu=0; else if(b=grayx) tx.red=mg; tx.grn=mg; tx.blu=mg; /tx.grn=(d-c)/(b-a)*(tx.grn-a)+c; /tx.blu=(d-c)/(b-a)*(tx.blu-a)+c;/int x=(tx.red+tx.grn+tx.blu)/3;pDC-SetPixel(i, j, RGB(tx.red,tx.grn, tx.blu);/ TODO: Add extra validation here4
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1