数字图像处理实验5-图像增强(2).doc
《数字图像处理实验5-图像增强(2).doc》由会员分享,可在线阅读,更多相关《数字图像处理实验5-图像增强(2).doc(4页珍藏版)》请在冰豆网上搜索。
班级:
数字图像处理
实验时间:
200年月日 实验小组:
第组
组长:
组员:
组员:
指导教师签名:
实验情况评定:
实验五图像增强
(2)
实验目的:
通过实验掌握下列知识:
1、学习常见的图像增强的方法并实际体会图像增强前后画质的变化;
2、了解几种不同增强方式用于不同图像处理所取得的效果(削波处理和阈值化处理);
3、初步掌握简单算法的代码实现的方法;
4、初步了解MFC的一些初步编程技巧;
内容及步骤
一、通过VC实现一个削波处理:
1、继续按照前几节的实验课介绍的方法,建立一个ImageProcessingWizard工程;
2、利用试验三和实验四介绍的方法,通过CBmp类读入“数字图像处理实验”文件夹中的“样品.bmp”,并相应在各消息函数里添加必须的代码;
3、在上述代码中间添加图形增强的代码,应该注意:
读取的是彩色图形,所以在进行削波处理时,也必须应针对每一个基色分别进行削波处理;
4、削波处理的参数:
a=0,b=210;
5、运行并观察运行结果;
二、通过VC实现一个阈值化处理:
1、步骤1与上一个实验相同,仍旧是针对“数字图像处理实验”文件夹中的“样品.bmp”,这个实验是进行图形的阈值化处理;
2、利用前面介绍的方法,通过CBmp类读入“数字图像处理实验”文件夹中的“样品.bmp”,并相应在各消息函数里添加必须的代码;
3、应该注意:
读取的是彩色图形,所以在进行灰度窗口变换时,应该先将彩色图象转换为灰度图象,然后再进行阈值化处理;
4、阈值化处理的参数:
a=175;
5、运行并观察运行结果;
注:
结构rgb有一个成员函数graylevel可以进行彩色图象的灰度变换,代码例子如下:
structrgbtx=bmp1->pImageData[j*bmp1->nWidth+i];
doublegrayx=tx.graylevel();
实验报告要求:
1、记录你编写的削波处理实验代码,同时观察并纪录经过削波处理的效果;
实验代码:
voidCMy5Dlg:
:
OnOK()
{
doublea=0,b=210,mf=230,mg=220;
//TODO:
Addextravalidationhere
for(inti=0;inWidth;i++)
for(intj=0;jnHeight;j++){
structrgbtx;
tx=bmp1->pImageData[j*bmp1->nWidth+i];
if(tx.red<=b&&tx.red>=0)
{
tx.red=mg/b*tx.red;
}
elseif(b<=tx.red&&mf>=tx.red)
{
tx.red=(mg/(mf-b))*tx.red;
}
if(tx.grn<=b&&tx.grn>=0)
{
tx.grn=mg/b*tx.red;
}
elseif(b<=tx.grn&&mf>=tx.grn)
{
tx.grn=(mg/(mf-b))*tx.grn;
}
if(tx.blu<=b&&tx.blu>=0)
{
tx.blu=mg/b*tx.blu;
}
elseif(b<=tx.blu&&mf>=tx.blu)
{
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;
//intx=(tx.red+tx.grn+tx.blu)/3;
pDC->SetPixel(i,j,RGB(tx.red,tx.grn,tx.blu));
}
//TODO:
Addextravalidationhere
}
2、记录你编写的阈值化处理的实验代码。
voidCMy5Dlg:
:
OnOK()
{
doublea=175,mf=220,mg=230;
//TODO:
Addextravalidationhere
for(inti=0;inWidth;i++)
for(intj=0;jnHeight;j++){
structrgbtx;
tx=bmp1->pImageData[j*bmp1->nWidth+i];
doublegrayx=tx.graylevel();
if(grayx {
tx.red=0;
tx.grn=0;
tx.blu=0;
}
elseif(b<=grayx&&mf>=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;
//intx=(tx.red+tx.grn+tx.blu)/3;
pDC->SetPixel(i,j,RGB(tx.red,tx.grn,tx.blu));
}
//TODO:
Addextravalidationhere
}
4