您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 造纸印刷 > 基于DSP的数字图像处理
实验目的:1.学习使用MATLAB读取图像,并输出.h文件2.学习使用TIIMGLIB库函数的使用方法3.理解掌握Sobel算子进行图像边缘检测的DSP实现实验原理:两个具有不同灰度值的相邻区域之间总存在边缘,边缘是灰度值不连续的表现。由于边缘是图像上灰度变化最剧烈的地方,边缘检测就是充分利用了这个特点,对图像各像素点进行微分或求二阶微分来确定边缘像素点。一阶微分图像的峰值处对应着图像的边缘点;二阶微分图像的过零点处对应着图像的边缘点。为了提取图像边缘,我们定义了图像的梯度为梯度算子,常用的梯度算子有Robert算子、Sobel算子、Prewitt算子和拉普拉斯算子等。实验步骤:一、对lenna.bmp图像的DSP处理1.用MATLAB读取图像并输出.h文件。本实验是对经典图像lenna.bmp的读取和数据分析。程序如下:[I,map]=imread('lenna.bmp');imshow(I)It(:,:,1)=I(:,:,1)';I=double(I');fid=fopen('lenna.h','w');fprintf(fid,'/*lennaimage256*256*/\n\n');fprintf(fid,sprintf('shortlenna[256][256]={\n'));forii=1:65536fprintf(fid,'%3d,',I(ii));if0==mod(ii,8)fprintf(fid,'\n');endendfprintf(fid,'\n};\n');fclose(fid);运行之后将产生一个lenna.h文件,文件内存取了256*256个数据,供CCS调用。2.使用TIIMGLIB实现Sobel边缘检测。TIIMGLIB是图像/视频处理函数库,包含了许多经过优化的常用数字图像处理算法的函数。对于C6713DSK,我们使用TIC62xIMGLIB(对C67x兼容)。本实验实现Sobel边缘检测算法:(1)编写边缘检测程序sobel_edge_detect.c如下:#includeimg_sobel.h#includeimg_thr_le2min.h#includelenna.h#pragmaDATA_SECTION(img_buf1,IRAM);#pragmaDATA_ALIGN(img_buf1,8);unsignedcharimg_buf1[N_PIXELS];#pragmaDATA_SECTION(img_buf2,IRAM);#pragmaDATA_ALIGN(img_buf2,8);unsignedcharimg_buf2[N_PIXELS];staticvoidsobel_edge_detect(unsignedcharT){IMG_sobel(img_s,img_buf2,Y_SIZE,X_SIZE);IMG_thr_le2min(img_buf2,img_buf1,Y_SIZE,X_SIZE,T);}voidmain(){/*processtheimage*/sobel_edge_detect((unsignedchar)120);}同时编写好img_sobel.h(边缘检测头文件)和img_thr_le2min.h(二值化头文件)(2)建立工程improc,添加源程序sobel_edge_detect.c,图像/视频库文件img62x.lib,头文件img_sobel.h、img_thr_le2min.h、lenna.h以及链接器命令文件dsk6713.cmd。编译链接后产生输出文件improc.out,将其载入,运行程序。二、对已有的image.h文件进行边缘检测和二值化分析。与步骤一类似。实验结果:用CCSGraph功能观察结果,CCSViewGraphImage一、程序中img_buf2和img_buf1分别存储着边缘检测数据和二值化处理数据。例如观察原图像进行如下设置:原图像如下:接着分别观察img_buf2和img_buf1边缘检测后图像:二值化处理后图像:二、观察原图像配置如下:原图像、边缘检测图像、二值化图像进行对比如下:
本文标题:基于DSP的数字图像处理
链接地址:https://www.777doc.com/doc-2569293 .html