数字图像处理实验4.docx
- 文档编号:12844454
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:38
- 大小:3.25MB
数字图像处理实验4.docx
《数字图像处理实验4.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验4.docx(38页珍藏版)》请在冰豆网上搜索。
数字图像处理实验4
数字图像处理实验4
任课教师:
马文娟
《数字图像分析与艺术化处理》
(2012-2013学年第2学期)
实
验
报
告
学号:
2011329700132
姓名:
班级:
数字媒体与技术11
(1)
实验四图像艺术化处理实验
实验项目名称:
图像艺术化处理实验
实验项目性质:
设计性实验
所属课程名称:
数字图像分析与艺术化处理
实验计划学时:
2
一.实验目的
(1)了解各种图像艺术化处理方法的原理。
(2)掌握几种简单的艺术化处理方法的实现过程。
二.实验内容和要求
编程实现三种艺术化处理方法。
三.实验主要仪器设备和材料
计算机,VS2012
四.实验原理
(1)黑白照片制作
我们通常说的黑白照片并不是数字图像中的二值图,而是灰度图。
由彩色图像转化为灰度图像的过程叫做灰度化处理。
一般情况下彩色图像每个像素用3个字节表示,每个字节对应着R、G、B分量的亮度(红、绿、蓝),转换后的灰度图像的一个像素用一个字节表示该点的灰度值,它的值在0~255之间,数值越大,该点越白,即越亮,越小则越黑。
转换关系为:
(4-1)
其中Gray(i,j)为转换后的灰度图像在(i,j)点处的灰度值。
灰度图只能表现256种颜色,灰度化处理还有其他的方法,如:
取3个分量的最大值、最小值、算术平均值等,目的都是使颜色的R、G、B分量值相等。
(2)染色效果处理
染色效果在数字图像处理中又叫伪彩色处理,即把整幅图像染成一种给定的色调。
方法是指定一种渲染颜色,然后用当前像素的灰度分别乘以指定颜色的R、G、B三分量,并将结果作为当前像素的最终颜色。
2.风格化效果
(1)图像逆反处理
图像亮度逆反处理时,对每个像素的蓝、绿、红3个分量值分别求逆反处理,即用255分别减去当前像素的蓝、绿、红3个分量值,而相减得到3个新值作为图像的值。
(2)曝光处理
曝光图像或多或少地损失了在原图像中可以看到的那些明快的颜色和色调。
曝光处理的效果是基于照片技术。
曝光图像的算法是逆转数值小于128的R,G,B三分量。
例如,三分量值为(60,210,135)的像素,只是红色被逆转,经过转换后为(195,210,135);而对于数值(50,100,70)均小于128,所以都需逆转,得到(205,155,185)。
(3)马赛克处理
马赛克效果,其原理是将图像从形式上划分为很多小块,在每块内的各个像素都取到相同的红、绿、蓝颜色值,也就是各像素值之和的平均值。
从而对某些细节进行模糊化处理,使图像粗糙化。
(4)浮雕处理
浮雕效果就是只将图像的变化部分突出出来,而相同颜色部分则被淡化,使图像出现纵深感,从而达到浮雕效果。
将要处理的像素取值为与处于前一个相邻像素间的差值,这样只有颜色变化区才会出现色彩,而颜色平淡区因差值几乎为零则变成黑色,可以通过加上一个常量来增加一些亮度。
(4-2)
其中,G(i,j)为处理后图像的像素值,f(i,j)为原图像的像素值,f(i-1,j)为前一个相邻像素的值,常量通常取值为128,即
Red=R-r+128
Blue=B-b+128(4-3)
Green=G-g+128
上式中,R,G,B为当前原像素f(i,j)的红绿蓝3个分量值,r,g,b为前一个相邻像素f(i-1,j)的红、绿、蓝3个分量值,Red,Blue,Green分别为处理后的图像G(i,j)的像素值。
(5)霓虹处理
霓虹效果用来描绘图像的轮廓,勾画颜色变化的边缘,产生轮廓发光的效果。
先计算原图像当前像素f(i,j)的红、绿、蓝分量与其相同行f(i+1,j)及相同列f(i,j+1)相邻像素的梯度,即差的平方和的平方根,然后将梯度值作为处理后像素g(i,j)的红、绿、蓝的3个分量。
R1=(r1-r2)2R2=(r1-r3)2
G1=(g1-g2)2G2=(g1-g3)2
B1=(b1-b2)2B2=(b1-b3)2
(4-4)
上式中r1,g1,b1分别为原图像像素f(i,j)的红、绿、蓝分量值,r2,g2,b2分别为原图像同行相邻像素f(i+1,j)的红、绿、蓝分量值,r3,g3,b3分别为原图像同列相邻像素f(i,j+1)的红、绿、蓝分量值,Red,Green,Blue为图像处理后的像素f(i,j)的红、绿、蓝分量值。
(6)素描效果处理
生成近似素描效果的图像有很多种方法,借助拉普拉斯算子生成素描图的方法较为简单。
理想的素描图像要求轮廓清晰,线条柔和,且不能包含过多的杂点干扰。
拉普拉斯边缘检测得到的正边缘通常可以较好地描述图形的轮廓线条,但往往包含过多的细节信息或受杂点影响,因此需要对边缘检测结果进行进一步处理。
首先使用卷积模板消除大量杂点,然后通过设定阈值消除剩余的少量灰度较低的斑点,最后对得到的素描图进行模糊处理,依然使用卷积模板。
3.扭曲效果处理(实现其中一种即可)
扭曲效果包括挤压效果、球面效果、漩涡效果、波浪效果和摩尔纹效果。
挤压效果是将图像向内挤压,产生收缩变形。
挤压效果的实现可以看成是数学极坐标的一种体现,将当前像素点、图像正中心点和过中心点的水平线这三要素画出一个极坐标,然后根据用户指定的挤压度,在当前点与中心点所连的直线上映射出一个像素点,最后将这个像素点作为目标点输出。
设原图像上的点坐标用(x’,y’)表示,挤压效果图上的点坐标用(x,y)表示,图像正中心点坐标为(midx,midy),ρ和θ表示点(x,y)所在极坐标系对应的极值和极角,degree为挤压度,取值为[1,32],那么挤压效果满足的关系如下式所示:
(4-5)
其中,
球面效果是将图像中部隆起成球形,使对象具有立体凸起效果,就像哈哈镜中的图像一样。
其实现类同于挤压效果,也可以看成是极坐标的一种体现。
设坐标表示和挤压效果一致,那么球面效果满足的关系如式(4-6)所示:
(4-6)
漩涡效果是将整幅图像由外向内进行选择扭曲,越往中心,旋转扭曲程度越强烈,从而达到一种很真实的漩涡效果。
漩涡效果仍然是极坐标的一种体现,坐标表示和挤压效果一致,不同的是用swirldegree表示漩涡幅度,取值范围为[1,100],那么该效果满足的关系如式(4-7)所示:
(4-7)
波浪效果是将图像中的像素产生移位,从而创建出起伏跌荡的图像效果。
波浪效果的实现可以理解为某一个像素在它自身一定范围内进行有规律的振动起伏,振动幅度由用户指定,可利用三角函数实现。
仍然设原图像上的点坐标用(x’,y’)表示,波浪效果图上的点坐标用(x,y)表示,degree表示振动幅度,取值范围为[1,32],那么该效果满足的关系如式(4-8)所示:
(4-8)
摩尔纹是大屏幕显示器在显示大面积相同色彩的画面时出现的彩色波浪状条纹,它会影响视觉效果,其实现也可以看成是极坐标的一种体现,但是由于通常情况下得到的摩尔纹效果十分抽象,往往将处理后的图像与原图像进行Alpha混合。
设坐标表示与挤压效果一致,degree表示强度,取值范围在[1,16],则摩尔纹效果满足的关系如式(4-9)所示:
(4-9)
五.实验设计步骤
1.艺术化效果
1)黑白照片制作
(1)读取图像文件;
(2)得到每个像素的蓝、绿、红三个分量;
(3)通过取三个分量的最大值、最小值、中值或算数平均值作为像素的灰度值,或者通过公式(4-1)得到像素的灰度值;
(4)显示处理后图像。
2)染色效果处理
(1)读取图像文件;
(2)得到每个像素的灰度值gray;
(3)假设要加载的颜色三分量值分别为r,g,b,那么将r*gray/255,g*gray/255,b*gray/255的值作为对应像素的三个颜色分量的新值;
(4)显示处理后图像。
2.风格化效果
1)图像逆反处理(底片效果)
(1)读取图像文件;
(2)得到每个像素的蓝、绿、红三个分量;
(3)对三个分量值取反;
(4)显示处理后图像。
2)曝光处理
(1)读取图像文件,得到每个像素的蓝、绿、红三个分量;
(2)对这三个分量分别进行判断,若大于128,则保持不变,否则逆转;
(3)把变换后的值作为三个分量的新值,显示处理后图像。
3)马赛克处理
(1)读取图像文件;
(2)把图像划分成5×5的矩阵;
(3)对每个矩阵内像素的蓝、绿、红三分量分别求平均值;
(4)把得到的三个平均值赋给当前矩阵内的所有像素点,作为它们蓝、绿、红分量的值;
(5)显示处理后图像。
4)浮雕处理
(1)读取图像文件;
(2)对每个像素点,得到它本身和左邻点的蓝、绿、红三个分量值;
(3)对该像素和其左邻点的三个分量值分别进行差运算,并加上一个常量(通常为128);
(4)把计算得到的蓝、绿、红的对应值作为该像素的新值;
(5)显示处理后图像。
5)霓虹处理
(1)读取图像文件;
(2)对每个像素点,得到它本身及同行右邻点和同列下邻点的蓝、绿、红三个分量值;
(3)对两个邻点的分量值分别与该像素进行梯度运算,即差的平方和的平方根;
(4)把计算得到的蓝、绿、红的对应值作为该像素的新值;
(5)显示处理后的图像。
6)素描效果处理
(1)读取图像文件。
(2)对图像利用拉普拉斯算子进行边缘检测,采用卷积模板的方法。
模板如图(a)所示。
(3)去除杂点,同样使用卷积模板的方法。
对每个像素分别使用两个模板(如图(b)所示)进行卷积运算,对两个结果取较大值,与阈值(一般设为25)比较,小于阈值的点即为杂点。
(4)去除杂点后,图像仍然含有少量灰度较低的斑点,通过设定灰度阈值Ka(一般设为32)去除。
方法为:
对每个像素的灰度值乘以2,如果灰度值大于255,则设为255;如果小于阈值Ka,则设为0。
(5)对素描图进行模糊处理,卷积模板如图(c)所示。
(6)对图像取反操作,显示处理后的图像。
(a)(b)
(c)
3.扭曲效果处理
(1)读取图像文件;
(2)循环处理图像数据区内所有像素;
(3)计算出当前像素点与图像中心点的距离ρ及角度θ(对于波浪效果以外的四种效果)或三角函数值(对于波浪效果);
(4)根据用户指定的幅度值,以及上步求出的结果值,代入各效果对应的关系式,映射出目标位置;
(5)将得到的目标位置对应的原图的像素值赋予当前像素点,显示处理后的图像。
六.实验代码
黑白效果:
voidCDIB:
:
HeiBai()
{
intwidth,height;
autop_data=this->m_pDIBData;
width=this->GetDIBWidth();
height=this->GetDIBHeight();
intlenght=3*width;
while(lenght%4!
=0)lenght++;
lenght=lenght-3*width;
for(intj=0;j for(inti=0;i { BYTE*pbyBlue=p_data++; BYTE*pbyGreen=p_data++; BYTE*pbyRed=p_data++; autobyAvr=*pbyBlue*0.3+*pbyGreen*0.59+*pbyRed*0.11; m_pDIBData[j*(3*width+lenght)+i*3+0]=byAvr; m_pDIBData[j*(3*width+lenght)+i*3+1]=byAvr; m_pDIBData[j*(3*width+lenght)+i*3+2]=byAvr; m_pdata[j*width+i]=byAvr; } } 染色效果: voidCDIB: : RanSe() { intwidth,height; autop_data=this->m_pDIBData; width=this->GetDIBWidth(); height=this->GetDIBHeight(); intlenght=3*width; while(lenght%4! =0)lenght++; lenght=lenght-3*width; for(intj=0;j for(inti=0;i { BYTE*pbyBlue=p_data++;//得到蓝色值 BYTE*pbyGreen=p_data++;//得到绿色值 BYTE*pbyRed=p_data++;//得到红色值 autobyAvr=*pbyBlue*0.3+*pbyGreen*0.59+*pbyRed*0.11; m_pDIBData[j*(3*width+lenght)+i*3+0]=0; m_pDIBData[j*(3*width+lenght)+i*3+1]=0; m_pDIBData[j*(3*width+lenght)+i*3+2]=*pbyRed; m_pdata[j*width+i]=byAvr; } } 怀旧效果: voidCDIB: : HuaiJiu() { intwidth,height; autop_data=this->m_pDIBData; width=this->GetDIBWidth(); height=this->GetDIBHeight(); intlenght=3*width; while(lenght%4! =0)lenght++; lenght=lenght-3*width; for(intj=0;j for(inti=0;i { BYTE*pbyBlue=p_data++; BYTE*pbyGreen=p_data++; BYTE*pbyRed=p_data++; autoblue=*pbyRed*0.272+*pbyGreen*0.534+*pbyBlue*0.131; autogreen=*pbyRed*0.349+*pbyGreen*0.686+*pbyBlue*0.168; autored=*pbyRed*0.393+*pbyGreen*0.769+*pbyBlue*0.189; blue=(blue>255)? 255: blue; green=(green>255)? 255: green; red=(red>255)? 255: red; m_pDIBData[j*(3*width+lenght)+i*3+0]=blue; m_pDIBData[j*(3*width+lenght)+i*3+1]=green; m_pDIBData[j*(3*width+lenght)+i*3+2]=red; //m_pdata[j*width+i]=byAvr; } } 底片效果: voidCDIB: : DiPian() { intwidth,height; autop_data=this->m_pDIBData; width=this->GetDIBWidth(); height=this->GetDIBHeight(); intlenght=3*width; while(lenght%4! =0)lenght++; lenght=lenght-3*width; for(intj=0;j for(inti=0;i { BYTE*pbyBlue=p_data++;//得到蓝色值 BYTE*pbyGreen=p_data++;//得到绿色值 BYTE*pbyRed=p_data++;//得到红色值 autobyAvr=*pbyBlue*0.3+*pbyGreen*0.59+*pbyRed*0.11; m_pDIBData[j*(3*width+lenght)+i*3+0]=255-*pbyBlue; m_pDIBData[j*(3*width+lenght)+i*3+1]=255-*pbyGreen; m_pDIBData[j*(3*width+lenght)+i*3+2]=255-*pbyRed; m_pdata[j*width+i]=byAvr; } } 曝光处理: voidCDIB: : BaoGuang() { intwidth,height; autop_data=this->m_pDIBData; width=this->GetDIBWidth(); height=this->GetDIBHeight(); intlenght=3*width; while(lenght%4! =0)lenght++; lenght=lenght-3*width; for(intj=0;j for(inti=0;i { BYTE*pbyBlue=p_data++;//得到蓝色值 BYTE*pbyGreen=p_data++;//得到绿色值 BYTE*pbyRed=p_data++;//得到红色值 autobyAvr=*pbyBlue*0.3+*pbyGreen*0.59+*pbyRed*0.11; if(*pbyBlue<128) m_pDIBData[j*(3*width+lenght)+i*3+0]=255-*pbyBlue; if(*pbyGreen<128) m_pDIBData[j*(3*width+lenght)+i*3+1]=255-*pbyGreen; if(*pbyRed<128) m_pDIBData[j*(3*width+lenght)+i*3+2]=255-*pbyRed; m_pdata[j*width+i]=byAvr; } } 马赛克处理: voidCDIB: : MaSaiKe() { intwidth,height; autop_data=this->m_pDIBData; width=this->GetDIBWidth(); height=this->GetDIBHeight(); intlenght=3*width; while(lenght%4! =0)lenght++; lenght=lenght-3*width; for(intj=0;j {inti=0; while(i { BYTEpbyBlue=p_data[j*(3*width+lenght)+i*3+0]; BYTEpbyGreen=p_data[j*(3*width+lenght)+i*3+1]; BYTEpbyRed=p_data[j*(3*width+lenght)+i*3+2]; intp=i/6; p=p*6; m_pDIBData[j*(3*width+lenght)+i*3+0]=m_pDIBData[j*(3*width+lenght)+p*3+0]; m_pDIBData[j*(3*width+lenght)+i*3+1]=m_pDIBData[j*(3*width+lenght)+p*3+1]; m_pDIBData[j*(3*width+lenght)+i*3+2]=m_pDIBData[j*(3*width+lenght)+p*3+2]; i++; } } for(inti=0;i {intj=0; while(j { BYTEpbyBlue=p_data[j*(3*width+lenght)+i*3+0]; BYTEpbyGreen=p_data[j*(3*width+lenght)+i*3+1]; BYTEpbyRed=p_data[j*(3*width+lenght)+i*3+2]; intp=j/6; p=p*6; m_pDIBData[j*(3*width+lenght)+i*3+0]=m_pDIBData[p*(3*width+lenght)+i*3+0]; m_pDIBData[j*(3*width+lenght)+i*3+1]=m_pDIBData[p*(3*width+lenght)+i*3+1]; m_pDIBData[j*(3*width+lenght)+i*3+2]=m_pDIBData[p*(3*width+lenght)+i*3+2]; j++; } } } 浮雕处理: voidCDIB: : FuDiao() { intwidth,height; autop_data=this->m_pDIBData; width=this->GetDIBWidth();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 实验