第10章 数字图像处理实验(C55x DSP)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
nk p( t k ) n
其程序流程图如图10-6所示。
第10章 数字图像处理初步实验
图10-6 直方图均衡化程序流程图
第10章 数字图像处理初步实验
原始图像如图10-7所示,其动态范围较小而且较暗,其 直方图如图10-8所示,直方图所占据的灰度值范围比较窄, 而且集中在低灰度值一边。
第10章 数字图像处理初步实验
■计算机安装CCS 5000或CCS v3.1及MATLAB仿真软
件。
第10章 数字图像处理初步实验
10.2.3 实验内容 一幅图像,其动态范围较小而且较暗,反映在直方图上
就是其直方图所占据的灰度值范围比较窄,而且集中在低灰
度值一边。为了使图像更清晰,我们采用直方图均衡化的方 法来增加图像灰度动态范围,增强对比度。 首先根据流程图进行编程;其次输入一幅图像,将其通 过所设计的图像处理系统;再次用CCS的虚拟示波器和频谱
类型图像可由其直方图完全描述。
第10章 数字图像处理初步实验
在数字图像f(m,n)情况下,灰度直方图是灰度值的函数, 描述图像中具有该灰度值的像素个数,其横坐标表示像素的 灰度级别,纵坐标是该灰度出现的频率(像素个数与图像像 素总数之比)。若设图像像素的灰度值为r0,r1,…,rL-1, 则概率p(ri)为
unsigned char dbImage[IMAGEWIDTH*IMAGEHEIGHT];
float fHistogram[256];
int main()
{
第10章 数字图像处理初步实验
InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEH EIGHT); //断点
(0≤Sk≤1,k=0,1,2,…,L-1)
Βιβλιοθήκη Baidu(10.2)
第10章 数字图像处理初步实验
(5) 取整计算: Uk =int[(N-1)tk+k/N] (6) 确定映射关系:
S k 映射 U k
(7) 统计新直方图各灰度级Uk的像素数目nk。
第10章 数字图像处理初步实验
(8) 计算新的直方图:
第10章 数字图像处理初步实验
第10章 数字图像处理初步实验
10.1 数字图像直方图统计
10.2 数字图像直方图均衡化增强 10.3 数字图像边缘检测
第10章 数字图像处理初步实验
10.1 数字图像直方图统计
10.1.1 实验目的 ■掌握直方图统计的原理和程序设计方法。 ■了解各种图像的直方图统计意义及其在实际中的运用。
图10-7 原始图像
第10章 数字图像处理初步实验
Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogr
am); InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEH EIGHT); //断点
Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogr
10.2 数字图像直方图均衡化增强
10.2.1 实验目的 ■掌握直方图均衡化增强的原理和程序设计方法。 ■观察对图像进行直方图均衡化增强的效果。
第10章 数字图像处理初步实验
10.2.2 实验设备 ■PC兼容机一台;操作系统为Windows 2000(或 Windows NT、Windows 98、Windows XP)。
am);
while (1); //断点
第10章 数字图像处理初步实验
} /*以下是直方图统计子程序*/
void Histogram(unsigned char *pImage,int nWidth,int
nHeight,float fHisto[256]) { int i,j; unsigned int uWork; unsigned char *pWork;
灰度值为 ri 的像素数 p(ri ) (i = 0,1,2,…,L-1) 图像上总的像素数
(10.1)
且有
p( r ) 1
i i 0
L 1
第10章 数字图像处理初步实验
尽管灰度直方图不能表示出某灰度值在什么位置,更不 能直接显示图像内容,但是具有统计特性的直方图却能描述
该图像的灰度分布特性,使人们从中得到诸如总体明亮程度、
FILE *fp; if ( fp=fopen(cFileName,"rb" ) )
第10章 数字图像处理初步实验
{ fseek(fp,1078L,SEEK_SET);
pWork=pImage+(nHeight-1)*nWidth;
for ( j=0;j<nHeight;j++,pWork-=nWidth ) fread(pWork,nWidth,1,fp); fclose(fp); } }
第10章 数字图像处理初步实验
for ( i=0;i<256;i++ ) fHisto[i]=0.0f; pWork=pImage; for ( i=0;i<nHeight;i++ ) { for ( j=0;j<nWidth;j++,pWork++ )
{
uWork=(unsigned int)(*pWork);
第10章 数字图像处理初步实验
void InitImage(unsigned int nMode,unsigned char *pImage,int nWidth,int nHeight);
void Histogram(unsigned char *pImage,int nWidth,int
nHeight,float fHisto[256]);
fill = 0 IRAM fill = 0 fill = 0 IRAM fill = 0 fill = 0 IRAM fill = 0 IRAM fill = 0 IRAM fill = 0 IRAM fill = 0 IRAM fill = 0 IRAM fill = 0
第10章 数字图像处理初步实验
fHisto[uWork]++;
}
第10章 数字图像处理初步实验
} uWork=nWidth*nHeight;
for ( i=0;i<256;i++ )
{ fHisto[i]/=uWork; fHisto[i]*=100; } }
第10章 数字图像处理初步实验
2. 初始化和读图像子程序Initimage.c #include<stdio.h> #define MODEPHOTO1 1
第10章 数字图像处理初步实验
10.1.2 实验设备 ■PC兼容机一台;操作系统为Windows 2000(或 Windows NT、Windows 98、Windows XP)。
■计算机安装CCS 5000或CCS v3.1及MATLAB仿真软
件。
第10章 数字图像处理初步实验
10.1.3 实验内容 输入一幅图像,使用MATLAB统计其直方图,然后编 写DSP程序,再统计其直方图,比较这两个直方图的差异。 灰度直方图是数字图像处理中一个最简单、最有用的工 具,它描述了一幅图像的灰度级内容。任何一幅图像的直方 图都包括了可观的信息,给出了一幅图像的概貌描述,某些
10.1.4 实验步骤 1.实验准备 设置C55x软件仿真模式,启动CCS。 2.建立工程、编译链接并装载程序 建立两个C语言源文件、一个命令文件,然后把这三个
文件添加到工程。在每个文件中输入参考程序中的相应内容,
就得到如图10-2所示工程界面,然后再编译、链接并装载程 序。
第10章 数字图像处理初步实验
第10章 数字图像处理初步实验
3. Vc5509.cmd -heap 0x1000 -stack 0x1000 -c -l rts55.lib
MEMORY
{ IRAM: o = 000000c0h l = 00040000h
}
SECTIONS
第10章 数字图像处理初步实验 { .text > IRAM .stack > .bss > IRAM .cinit > .const > IRAM .data > .far > .switch > .sysmem > .tables > .cio > }
#define MODEPHOTO2 2
#define GRAYBARLEVEL 16 void ReadImage(unsigned char *pImage,char *cFileName,int nWidth,int
nHeight);
//初始化图像子程序 void InitImage(unsigned int nMode,unsigned char *pImage,int nWidth,int nHeight) {
术在医学、遥感、微生物、刑侦以及军事等诸多领域得到了
广泛应用。 直方图均衡化的基本思想是把原始图像的直方图变换成
均匀分布的形式,这样就增加了像素灰度值的动态范围,从
而达到增强图像整体对比度的效果。具体方法是:
第10章 数字图像处理初步实验
(1) 给出原始图像的所有灰度级Sk(k=0,1,2,…,L-1)。 (2) 统计原始图像各灰度级的像素数nk。 (3) 利用下列直方图计算公式计算原始图像的直方图:
对比度和对象物的可分性等与图像质量有关的灰度分布概况,
成为一些处理方法的重要依据。
在MATLAB中,imhist函数可以用来计算和绘制图像的
直方图。对于lena图像,要想显示其直方图可以用以下的程
序来完成,其结果如图10-1所示。
第10章 数字图像处理初步实验
图10-1 原始图像及其灰度直方图
第10章 数字图像处理初步实验
图10-5 原始图像及直方图统计所得的图像
第10章 数字图像处理初步实验
10.1.5 参考程序清单 1. 主程序Hist.c
#define IMAGEWIDTH 80
#define IMAGEHEIGHT 80
//图像的宽度
//图像的高度
#define MODEPHOTO1 1
#define MODEPHOTO2 2
nk P(S k ) n
(k=0,1,…,L-1)
第10章 数字图像处理初步实验
其中,Sk代表图像的第k级灰度值;nk是图像中具有灰 度值Sk的像素个数;n是图像像素的总数。 (4) 计算原始图像的累计直方图,计算公式为
k ni t E EH (s k ) ps (si ) i 0 n i 0 k
其设置如图10-4所示。
第10章 数字图像处理初步实验
图10-4 设置直方图观察窗口对话框
第10章 数字图像处理初步实验
5.设置断点 在程序Hist.c中有注释断点的语句上设置软件断点。
6.运行程序
全速运行程序到各个断点,观察图像和直方图统计结果,如
图10-5所示。
第10章 数字图像处理初步实验
第10章 数字图像处理初步实验
switch ( nMode ) { case MODEPHOTO1: ReadImage(pImage,"..\\lina.bmp",nWidth,nHeight);
break;
case MODEPHOTO2:
ReadImage(pImage,"..\\Couple.bmp",nWidth,nHeight);
图10-2 工程界面
第10章 数字图像处理初步实验
3.设置原始图像观察窗口 在主菜单中选择View→Graph→Image命令,其设置如
图10-3所示。
第10章 数字图像处理初步实验
图10-3 设置原始图像观察对话框
第10章 数字图像处理初步实验
4.设置直方图观察窗口 在主菜单中选择View→Graph→Time/Frequency命令,
break; default:
第10章 数字图像处理初步实验
break; } } //读取图像子程序 void ReadImage(unsigned char *pImage,char *cFileName,int
nWidth,int nHeight)
{ int j;
unsigned char *pWork;
仪观察输入/输出图像的变化,以达到对输入图像进行直方
图均衡化增强的效果。
第10章 数字图像处理初步实验
10.2.4 实验原理 图像增强处理技术一直是图像处理领域中一类非常重要 的基本处理技术。通过采取适当的增强处理技术,可以将原 本模糊不清甚至根本无法分辨的原始图片,处理成清楚、明 晰的富含大量有用信息的可使用图像,因此此类图像处理技