数字图像处理
实验报告
课程: 数字图像处理
**** * *
姓名:
学号:
实验一 直方图线性变换及直方图均衡化
一、实验目的
通过了解直方图的绘制、线性变换和均衡化的基本原理与实现方法,熟悉在计算机上进行直方图均衡化、线性变换的方法,来掌握简单的直方图均衡化和线性变换程序设计编写。
二、实验内容
编写直方图的显示、均衡化及线性变换的C++语言程序,同时显示线性变换后的直方图。
三、实验步骤
1、新建MFC工程;
2、分析程序流程;
3、编写程序;
4、运行调试;
5、显示结果;
6、分析结果。
四、实验原理及实现方案
(1)线性变换
原理:线性变换是灰度变换的一种,就是将一个灰度区间映射到另一个灰度区间的变换。线性增强变换可使图像动态范围加大,图像对比度扩展,图像清晰,特征明显,是图像增强的重要手段。
此次实验采取的灰度变换公式是分段函数,如下图所示,
g(i,j)
255
130 160 255 f(i,j)
部分程序代码如下(详细见源文件):
for(i=1;i<height;i++)
{
for(j=0;j<width;j++)
{
int pos =width*i+j;
BYTE c = pData[pos];
pDC->SetPixel(j,260+height-i,RGB(c,c,c));
if(c<30){
pDC->SetPixel(j,height-i,RGB(0,0,0));}
else if(c>160){
pDC->SetPixel(j,height-i,RGB(255,255,255));}
else{
BYTE c2=BYTE(1.0*255/130*(c-30));
pDC->SetPixel(j,height-i,RGB(c2,c2,c2));
}
count[int(c)]++;
}
}
通过对不同区域的灰度值进行不同的线性变换,从而达到预期目的。
(2)直方图均衡化
原理:直方图均衡化主要用于修正那些灰度范围小,灰度集中的图像,通过修正使灰度拉开,灰度变丰富,从而起到增强图像视觉效果的作用。
实现方案:根据书本上所介绍的方法计算变换函数Sk和对应每个Sk的Nsk,,最后求得每个灰度级均衡化后所得的概率。再根据所得的概率画出均衡化后的直方图,比较与均衡化前的直方图的区别,分析两者的差别。算法实验步骤:
步骤1:原图像素点个数
步骤2:原图分布概率
步骤3:原图累计概率
步骤4:对累计概率四舍五入
步骤5:绘制直方图
部分程序代码如下(详细见源文件):
int ss[257];
for(i=0;i<257;i++){
ss[i]=0;
}
int pos =width*i+j;
for(i=0;i<256;i++){
count[i]=count[i]*10000/pos;
ss[i+1]=ss[i]+count[i];
}
for(i=1;i<256;i++)
{ for(int ii=0;ii<256;ii++)
{
if((ii*10000/256)>ss[i+1])
{
p[i+1]=ii;
break;
}
}
if(p[i+1]!=p[i])
{
kk++;
pp[kk]=i;
}
}
for(i=1;i<=kk;i++)
{
pDC->MoveTo(500+2*i,600);
pDC->LineTo(500+2*i,600-(ss[pp[i]]-ss[pp[i-1]]));
}
五、实验结果
1、线性变换
>局部直方图均衡化
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论