数字图像处理课设报告

合集下载

数字图像课程设计报告

数字图像课程设计报告

《数字图像处理》课程设计报告——手写阿拉伯数字的识别1、课程设计目的1)、提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。

2)、掌握文献检索的方法与技巧。

3)、熟悉掌握一门计算机语言,可以进行数字图像的应用处理的开发设计。

2、方法综述字符识别处理的信息可分为两大类:一类是文字信息,处理的主要是用各国家、各民族的文字(如:汉字,英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:邮政编码、统计报表、财务报表、银行票据等等,处理这类信息的核心技术是手写数字识别。

本次实验是对手写的阿拉伯数字进行识别,主要步骤包括预处理模块(其中用到图像分割方法),特征提取和利用人工神经网络(具体运用BP 神经网络方法)进行数字的识别。

2.1图像分割:图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。

它是由图像处理到图像分析的关键步骤。

现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。

2.1.1基于阈值的分割方法灰度阈值分割[1]法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。

阈值分割方法实际上是输入图像f到输出图像g的如下变换:其中,T为阈值,对于物体的图像元素g(i,j)=l,对于背景的图像元素g(i,j)=0。

由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。

阈值确定后,将阈值与像素点的灰度值比较和像素分割可对各像素并行地进行,分割的结果直接给出图像区域。

阈值分割的优点是计算简单、运算效率较高、速度快。

在重视运算效率的应用场合(如用于硬件实现),它得到了广泛应用。

人们发展了各种各样的阈值处理技术,包括全局阈值、自适应阈值、最佳阈值等等。

数字图像处理四个实验报告,带有源程序

数字图像处理四个实验报告,带有源程序

数字图像处理实验指导书学院:通信与电子工程学院专业:电子信息工程班级:学号:姓名:XX理工大学实验一 MATLAB数字图像处理初步一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。

2.熟练掌握在MATLAB中如何读取图像。

3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。

4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。

5.图像间如何转化。

二、实验原理及知识点1、数字图像的表示和类别一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。

灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。

例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。

因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。

图像关于x和y坐标以及振幅连续。

要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。

将坐标值数字化成为取样;将振幅数字化成为量化。

采样和量化的过程如图1所示。

因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。

作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。

图1 图像的采样和量化根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类:亮度图像(Intensity images)二值图像(Binary images)索引图像(Indexed images)RGB图像(RGB images)(1) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。

若亮度图像的像素都是uint8类或uint16类,则它们的整数值范围分别是[0,255]和[0,65536]。

若图像是double类,则像素取值就是浮点数。

数字图像处理课程设计报告(冈萨雷斯版)

数字图像处理课程设计报告(冈萨雷斯版)

1. 课程设计目的1、提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。

2、熟悉掌握一门计算机语言,可以进行数字图像的应用处理的开发设计。

2.课程设计内容及实现2.1、网页安全色(Web-Safe Colors)为了完成这项工作,必须找到一个合适的程序,这个程序可以把指定的JPG图像生成RGB元素的图像。

例如,MATLAB的图像处理工具箱可以实现这一点,但你也可以使用图像编辑程序像Adobe的Photo-Shop或Corel的Photo-Paint。

为了实现把图像转换为RGB 这一目标,也可以手动修改。

(a)编写计算机程序,把任意的RGB彩色图像转换到Web安全的RGB图像(Web安全颜色定义见图6.10)。

(b)下载图像图6.8,转换为网络安全色的RGB彩色图像。

图6.8是JPG格式,所以结果返回也为JPG(请看本项目的开始注释)。

解释你的结果和图6.8之间的差异。

2.1.1程序清单:I=imread('Fig6.08.jpg');subplot(121);imshow(I);title('原图');I1=fix((I/51)*51);subplot(122);imshow(I1);title('web-safe colors');2.1.2运行结果如图1图1 网页安全色结果分析:结果图出现明显的方格,每个方格就是一个网页安全色,方格内的颜色一致。

原图则是普通的RGB,假使在原图的相同区域划分出和结果图相对应的方格,则此方格里的颜色是一个渐变的颜色,并非同一种颜色。

2.2、伪彩色图像处理(Pseudo-Color Image Processing )(a)实现图6.23的特性,你可以为输入图像指定两个范围的灰度值,然后你的程序将输出的RGB图像,它的像素有一个指定的颜色,对应于输入图像的一个范围的灰度级,RGB 图像中剩余的像素具有和输入图像相同的灰度。

电子科技大学-数字图像处理-课程设计报告

电子科技大学-数字图像处理-课程设计报告

电子科技大学数字图像处理课程设计课题名称数字图像处理院(系)通信与信息工程学院专业通信工程姓名学号起讫日期指导教师2015年12月15日目录摘要: (03)课题一:图像的灰度级分辨率调整 (04)课题二:噪声的叠加与频域低通滤波器应用 (06)课题三:顶帽变换在图像阴影校正方面的应用 (13)课题四:利用Hough变换检测图像中的直线 (15)课题五:图像的阈值分割操作及区域属性 (20)课题六:基于MATLAB®的GUI程序设计 (23)结束语: (36)参考文献: (37)基于MATLAB®的数字图像处理课题设计摘要本文首先对数字图像处理的相关定义、概念、算法与常用变换进行了介绍;并通过七个课题实例,借助MATLAB®的图像处理工具箱(Computer Vision System Toolbox)对这些案例逐一实现,包括图像的灰度值调整、图像噪声的叠加、频域低通滤波器、阈值分割、Hough变换等,常用的图像变化与处理;然后通过MATLAB®的GUI程序设计,对部分功能进行模块化整合,设计出了数字图像处理的简易软件;最后给出了软件的帮助文件以及该简易程序的系统结构和m代码。

关键词:灰度值调整噪声图像变换MATLAB® GUI设计课题一:图像的灰度级分辨率调整设计要求:128,64,32,16,8,4,2,并在同一个figure窗口将图像的灰度级分辨率调整至{}上将它们显示出来。

设计思路:灰度级分辨率又称色阶,是指图像中可分辨的灰度级的数目,它与存储灰度级别所使用的数据类型有关。

由于灰度级度量的是投射到传感器上的光辐射值的强度,所以灰度级分辨率又称为辐射计量分辨率。

随着图像灰度级分辨率的的逐渐降低,图像中所包含的颜色数目将变得越来越少,从而在颜色维度造成图像信息量的退化。

MATLAB®提供了histeq函数用于图像灰度值的改变,调用格式如下:J = histeq(I,n)其中J为变换后的图像,I为输入图像,n为变换的灰度值。

《数字图像处理》课程建设汇报

《数字图像处理》课程建设汇报

《数字图像处理》课程建设汇报杨淑莹(教授、博士)天津理工大学计算机与通信工程学院课程简介数字图像处理是计算机、通信、信息、控制等相关专业的核心课,同时也是绝大部分专业的选修课。

是信息科学中发展最快的热点研究方向。

图像处理技术已渗透到计算机、通信、交通运输、医学、军事等多个领域,与人们的生活紧密相关。

培养目标培养具有系统、扎实的图像处理理论基础;在图像信息的处理及应用等方面具有较深的专业知识、较强的应用能力和实践动手能力;良好的编程素质;培养创新精神;能够从事数字图像处理工作的应用型高级专门人才。

《数字图像处理》课程是高等学校计算机技术类在本科教学计划中一门重要的专业课程。

人类从外界获得的信息约有75%是从图像中获得的。

随着现代电子、计算机、软件等技术的高速发展,图像处理技术的应用领域越来越广泛,对推动社会发展、改善人们的生活起到了重要的作用。

《数字图像处理》课程起点高、难度大,理论性和实践性很强。

传统教学以理论介绍为主,强调理论的体系和概念,忽视理论的实现步骤,基本的编程代码。

造成学生在学习时,感到理论概念抽象,理解仅限于表面认识,很难看到理论的实际应用效果。

面临实际问题时,学生往往不知所措,不知从何下手,更谈不上创新应用。

《数字图像处理》课程教学要求所授内容离不开计算机编程实现。

不能单纯以理论介绍为主,忽视理论的实现步骤,编程代码。

要让学生看到理论的实际应用效果。

课堂上不能只介绍理论,使学生理论与实际相脱离,在实践中无从下手。

课堂上也不能花大量的时间讲解复杂的程序。

20世纪90年代,大多高校采用翻译的国外教材进行纯理论教学。

随着计算机技术的发展,翻译教材内容苦涩难懂,理论与实际相脱节,与理论技术快速发展的矛盾更加突出。

虽然这门课程在教学模式上和教材方面都处于不断完善与发展的阶段,但总体形式上还存在以下二个问题:大部分教学偏于理论,少于实践方法的介绍。

学习者往往会被苦涩难懂的理论迷惑,见不到理论的效果,不利于对理论体系的快速掌握。

《数字图像处理》课程设计报告

《数字图像处理》课程设计报告

1.课程设计目的1、提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。

2、熟悉掌握一门计算机语言,可以进行数字图像的应用处理的开发设计。

2.课程设计内容及实现、二维快速傅立叶变换:本项目的重点是:这个项目的目的是开发一个2-D FFT程序“包”,将用于在其他几个项目。

您的实现必须有能力:(a)乘以(-1),x + y的中心变换输入图像进行滤波。

(b) 一个真正的函数相乘所得到的(复杂的)的阵列(在这个意义上的实系数乘以变换的实部和虚部)。

回想一下,对相应的元件上完成两幅图像的乘法。

(c) 计算傅立叶逆变换。

(d) 结果乘以(-1)x + y的实部。

(e) 计算频谱。

基本上,这个项目实现了图。

如果您正在使用MATLAB,那么您的傅立叶变换程序将不会受到限制,其大小是2的整数次幂的图像。

如果要实现自己的计划,那么您所使用的FFT 例程可能被限制到2的整数次幂。

在这种情况下,你可能需要放大或缩小图像到适当的大小,使用你的程序开发项目02-04逼近:为了简化这个和以下的工程(除项目04-05),您可以忽略图像填充(4.6.3节)。

虽然你的结果不会完全正确,将获得显着的简化,不仅在图像的大小,而且在需要裁剪的最终结果。

由这种近似的原则将不会受到影响结果如下:主要代码f=imread('(a).jpg');H=imread('(a).jpg');subplot(3,2,1);imshow(f);title('(a)原图像');[M1,N1]=size(f);f=im2double(f);[M2,N2]=size(H);H=im2double(H); %把灰度图像I1的数据类型转换成转换成双精度浮点类型for x=1:M1for y=1:N1f(x,y)=(-1)^(x+y)*f(x,y); %用(-1)^(x+y)乘以输入图像,来实现中心化变换endendF=fft2(f); %使用函数fft2可计算傅立叶变换subplot(3,2,3);imshow(F);title('(b)傅立叶变换的图像');if(M2==1)&&(N2==1)G=F(x,y)*H(x,y);elseif((M1==M2)&&(N1==N2))for x=1:M1for y=1:N1G(x,y)=F(x,y)*H(x,y);endendelseerror('输入图像有误','ERROR');end %通过两个图像的乘法程序,实现对相应元素的相乘g=ifft2(G);subplot(3,2,4);imshow(g);title('(c)傅立叶逆变换的图像');for x=1:M1for y=1:N1g(x,y)=(-1)^(x+y)*g(x,y);endendg=real(g);S=log(1+abs(F)); %计算傅立叶幅度谱并做对数变换subplot(3,2,5);plot(S); %二维图像显示幅度谱title('(d)二维图像显示幅度谱');Q=angle(F); %计算傅立叶变换相位谱subplot(3,2,6);plot(Q);title('(e)二维图像显示相位谱'); %二维图像显示相位谱结果截图图1 傅里叶变换及频谱图结果分析:图1中(a)是原始灰度图像,对原图进行傅里叶变换,用(-1)^(x+y)乘以输入图像,来实现中心化变换得到(b),(c)为傅里叶变换的逆变换得到的图像。

数字图像处理课程设计报告

数字图像处理课程设计报告

一.课程题目:Photoshop + 直方图均衡化二.设计目的:数字图像处理课程设计是在完成数字图像处理的相关理论的学习后,进行的综合性训练课程,其目的主要包括:1、使学生进一步巩固数字图像处理的基本概念、理论、分析方法和实现方法;2、增强学生应用VC++编写数字图像处理的应用程序及分析、解决实际问题的能力;3、尝试将所学的内容解决实际工程问题,培养学生的工程实践能力,提高工科学生的就业能力三.设计内容:( 备注:该课程设计是基于之前数字图像处理实验,其中新加入的功能涉及到之前的基础,需要调用其处理函数,故保留其实验功能并进行扩展。

设计中涉及的一些知识已经在实验时介绍过,此处只对新加入功能进行分析)打开图像—打开一幅BMP格式的图像,若打开的不是该格式,提示错误。

代码略;图像平滑—主要用来修饰边缘过于清晰,或者对比度过于强烈的图像,通过取平均值减少相邻像素间的差异,从而产生平滑的过渡效果。

作用:削弱相邻像素间颜色的差异,达到柔化图像的效果。

代码略;图像锐化—主要用来通过增强相邻像素间的对比度,使图像具有明显的轮廓,并变得更加清晰。

效果与“图像平滑”的效果正好相反。

代码略;底片化---底片上的颜色与色彩鲜艳的照片的颜色是正好相反的,即反色。

代码略;二值化—主要是用来将整幅图像呈现出明显的黑白效果。

代码略;垂直翻转垂直翻转是指把定义好的图像区域上下翻转地显示在屏幕上。

器方法是保持每行像素信息不变,改变行的顺序,将第一行的像素与倒数第一行的像素进行互换,第二行的与倒数第二行的互换……依次类推,从而实现图像的垂直翻转。

具体算法如下:for(i=0;i<nh/2;i++)for(j=0;j<nw;j++){temp=m_dib.m_pdata[i*nh+j];m_dib.m_pdata[i*nh+j]=m_dib.m_pdata[j+(nh-i-1)*nw];m_dib.m_pdata[j+(nh-i-1)*nw]=temp;}垂直翻转的效果图如下:水平镜像水平翻转是指将图像左右翻转地显示在屏幕上。

数字图像处理课程设计报告matlab

数字图像处理课程设计报告matlab

数字图像处理课程设计报告姓名:学号:班级: .net设计题目:图像处理教师:赵哲老师提交日期: 12月29日一、设计内容:主题:《图像处理》详细说明:对图像进行处理(简单滤镜,模糊,锐化,高斯模糊等),对图像进行处理(上下对称,左右对称,单双色显示,亮暗程度调整等),对图像进行特效处理(反色,实色混合,色彩平衡,浮雕效果,素描效果,雾化效果等),二、涉及知识内容:1、二值化2、各种滤波3、算法等三、设计流程图四、实例分析及截图效果:运行效果截图:第一步:读取原图,并显示close all;clear;clc;% 清楚工作窗口clc 清空变量clear 关闭打开的窗口close allI=imread('1.jpg');% 插入图片1.jpg 赋给Iimshow(I);% 输出图II1=rgb2gray(I);%图片变灰度图figure%新建窗口subplot(321);% 3行2列第一幅图imhist(I1);%输出图片title('原图直方图');%图片名称一,图像处理模糊H=fspecial('motion',40);%% 滤波算子模糊程度40 motion运动q=imfilter(I,H,'replicate');%imfilter实现线性空间滤波函数,I图经过H滤波处理,replicate反复复制q1=rgb2gray(q);imhist(q1);title('模糊图直方图');二,图像处理锐化H=fspecial('unsharp');%锐化滤波算子,unsharp不清晰的qq=imfilter(I,H,'replicate');qq1=rgb2gray(qq);imhist(qq1);title('锐化图直方图');三,图像处理浮雕(来源网络)%浮雕图l=imread('1.jpg');f0=rgb2gray(l);%变灰度图f1=imnoise(f0,'speckle',0.01);%高斯噪声加入密度为0.01的高斯乘性噪声 imnoise噪声污染图像函数 speckle斑点f1=im2double(f1);%把图像数据类型转换为双精度浮点类型h3=1/9.*[1 1 1;1 1 1;1 1 1];%采用h3对图像f2进行卷积滤波f4=conv2(f1,h3,'same');%进行sobel滤波h2=fspecial('sobel');g3=filter2(h2,f1,'same');%卷积和多项式相乘 same相同的k=mat2gray(g3);% 实现图像矩阵的归一化操作四,图像处理素描(来源网络)f=imread('1.jpg');[VG,A,PPG] = colorgrad(f);ppg = im2uint8(PPG);ppgf = 255 - ppg;[M,N] = size(ppgf);T=200;ppgf1 = zeros(M,N);for ii = 1:Mfor jj = 1:Nif ppgf(ii,jj)<Tppgf1(ii,jj)=0;elseppgf1(ii,jj)=235/(255-T)*(ppgf(ii,jj)-T);endendendppgf1 = uint8(ppgf1);H=fspecial('unsharp');Motionblur=imfilter(ppgf1,H,'replicate');figure;imshow(ppgf1);调用function [VG, A, PPG] = colorgrad(f, T)if (ndims(f)~=3) || (size(f,3)~=3)error('Input image must be RGB');endsh = fspecial('sobel');sv = sh';Rx = imfilter(double(f(:,:,1)), sh, 'replicate');Ry = imfilter(double(f(:,:,1)), sv, 'replicate');Gx = imfilter(double(f(:,:,2)), sh, 'replicate');Gy = imfilter(double(f(:,:,2)), sv, 'replicate');Bx = imfilter(double(f(:,:,3)), sh, 'replicate');By = imfilter(double(f(:,:,3)), sv, 'replicate');gxx = Rx.^2 + Gx.^2 + Bx.^2;gyy = Ry.^2 + Gy.^2 + By.^2;gxy = Rx.*Ry + Gx.*Gy + Bx.*By;A = 0.5*(atan(2*gxy./(gxx-gyy+eps)));G1 = 0.5*((gxx+gyy) + (gxx-gyy).*cos(2*A) + 2*gxy.*sin(2*A));A = A + pi/2;G2 = 0.5*((gxx+gyy) + (gxx-gyy).*cos(2*A) + 2*gxy.*sin(2*A)); G1 = G1.^0.5;G2 = G2.^0.5;VG = mat2gray(max(G1, G2));RG = sqrt(Rx.^2 + Ry.^2);GG = sqrt(Gx.^2 + Gy.^2);BG = sqrt(Bx.^2 + By.^2);PPG = mat2gray(RG + GG + BG);if nargin ==2VG = (VG>T).*VG;PPG = (PPG>T).*PPG;endf1=rgb2gray(f);imhist(f1);title('素描图直方图');五,图像处理实色混合(来源网络)%实色混合I(I<=127)=0; %对像素进行处理,若值小于等于127,置0 I(I>127)=255; %对像素进行处理,若值大于127,置255 imshow(I);title('像素图');I1=rgb2gray(f);imhist(I1);title('像素图直方图');六,图像处理反色图f=imread('1.jpg');q=255-q;imshow(q);title('反色图');imhist(q1);title('反色图直方图');七,图像处理上下对称A=imread('1.jpg');B=A;[a,b,c]=size(A);a1=floor(a/2); b1=floor(b/2); c1=floor(c/2);B(1:a1,1:b,1:c)=A(a:-1:a-a1+1,1:b,1:c);figureimshow(B)title('上下对称');A=rgb2gray(A);figureimhist(A)title('上下对称直方图');八,图像处理类左右对称C=imread('1.jpg');A=C;C(1:a,1:b1,1:c)=A(1:a,b:-1:b+1-b1,1:c);figureimshow(C)title('左右对称');A=rgb2gray(A);figureimhist(A);title('左右对称直方图');九,图像处理单双色显示a=imread('1.jpg');a1=a(:,:,1);a2=a(:,:,2); a3=a(:,:,3);aa=rgb2gray(a);a4=cat(3,a1,aa,aa); a5=cat(3,a1,a2,aa);figuresubplot(121);imshow(a4);title('单色显示');subplot(122);imshow(a5);title('双色显示');a4=rgb2gray(a4);a5=rgb2gray(a5);figuresubplot(121);imhist(a4);title('单色显示直方图');subplot(122);imhist(a5);title('双色显示直方图');十,图像处理亮暗度调整a=imread('1.jpg');a1=0.8*a;figuresubplot(121);imshow(a1);title('暗图');subplot(122);imshow(a2);title('亮图')q3=rgb2gray(a1);q4=rgb2gray(a2);figuresubplot(121);mhist(q3);title('暗图直方图') subplot(122);imhist(q4);title('亮图直方图')十一,图像处理雾化处理q=imread('1.jpg');m=size(q,1);n=size(q,2);r=q(:,:,1);g=q(:,:,2);b=q(:,:,3);for i=2:m-10for j=2:n-10k=rand(1)*10;%产生一个随机数作为半径di=i+round(mod(k,33));%得到随机横坐标dj=j+round(mod(k,33));%得到随机纵坐标r(i,j)=r(di,dj);%将原像素点用随机像素点代替 g(i,j)=g(di,dj);b(i,j)=b(di,dj);endenda(:,:,1)=r;a(:,:,2)=g;a(:,:,3)=b;imshow(a)title('雾化处理图');q=rgb2gray(a);figureimhist(q);title('雾化处理图直方图');十二,图像处理高斯滤波I = imread('1.jpg');G =fspecial('gaussian', [5 5], 2);% fspecial生成一个高斯滤波器Ig =imfilter(I,G,'same');%imfilter使用该滤波器处理图片imshow(Ig);title('高斯滤波');I1=rgb2gray(Ig);imhist(I1);title('高斯滤波直方图');十三,图像处理色彩平衡(来自网络)im=imread('1.jpg');im2=im;%存储元图像im1=rgb2ycbcr(im);%将im RGB图像转换为YCbCr空间。

数字图像处理课程设计报告封面和书写格式

数字图像处理课程设计报告封面和书写格式

《数字图像处理》课程设计报告( 2011 - 2012学年第 2 学期)专业班级:遥感09-02班姓名:董朝朝学号:310905060206指导老师:刘春国---------------------------------------------- 实习成绩:教师评语:教师签名:年月日实验项目:均值滤波一、实验内容1.位图文件读取、显示和存储,通过自己搭建一个Visual C++应用工程的基本流程,创建了一个基于MFC的Visual C++数字图像处理平台,实现了位图文件的读写、显示、存储操作。

2.均值滤波算法的原理:均值滤波采用的主要方法为领域平均法。

基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度个g(x,y),即个g(x,y)=1/m ∑f(x,y) m为该模板中包含当前像素在内的像素总个数。

我的具体做法:我用的是3*3的模板。

先把3*3的模板覆盖从开始的区域,然后在在其覆盖的区域中算出平均值。

在把算出来的平均值填写到中间的处理的像素上。

以此类推一步步的处理其他像素。

注明:在边缘化的像素没有做处理。

二、算法实现的主要内容1.打开消息函数代码:CString strFileName;static char szFilter[]="BMP文件(*.bmp)|*.bmp||";CFileDialog dlg(TRUE, "bmp", NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);if(dlg.DoModal()!=IDOK) return;strFileName=dlg.GetPathName();(this->GetDocument())->SetTitle(strFileName);if(!dib.LoadBmpFile(strFileName,m_pBitmap,m_dwHeight,m_dwWidth,m_flag))return;Invalidate(true);显示图像代码:RECT rectDoc;GetClientRect(&rectDoc);CSize pageSize(rectDoc.right, rectDoc.bottom);CSize lineSize(100,1);CSize docSize(0,0);RECT rect;GetClientRect(&rect);BYTE *pImageDisp = NULL;BITMAPINFO *pBmpInfo = NULL;//设置在指定设备内容中(显卡内存)的拉伸模式pDC->SetStretchBltMode(COLORONCOLOR);if(m_pBitmap){dib.TransToBmp(m_dwHeight, m_dwWidth, m_pBitmap, pImageDisp, m_flag);dib.CreateBITMAPINFO(pBmpInfo, m_dwHeight, m_dwWidth, m_flag);//拷贝内存数据到显示器StretchDIBits(pDC->GetSafeHdc(),rect.left, rect.top,m_dwWidth, m_dwHeight,0,0,m_dwWidth, m_dwHeight,pImageDisp,pBmpInfo,DIB_RGB_COLORS,SRCCOPY);docSize.cx = rectDoc.left + m_dwWidth;docSize.cy = rectDoc.top + m_dwHeight;}SetScrollSizes(MM_TEXT,docSize,pageSize,lineSize);if(pImageDisp) delete pImageDisp;if(pBmpInfo) delete pBmpInfo;保存函数代码:CString strFileName;static char szFilter[] = "BMP文件(*.bmp)|*.bmp||";CFileDialog dlg(false, "bmp", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter);if(dlg.DoModal() != IDOK) return;strFileName = dlg.GetPathName();if(!dib.WriteBmpFile(strFileName, m_pBitmap, m_dwHeight, m_dwWidth, m_flag)) return;均值滤波主要代码:void CMy123View::Onjunzhi(){BYTE *pData = new BYTE[m_dwWidth*m_dwHeight];BYTE *JUNZHI=new BYTE[m_dwWidth*m_dwHeight];memcpy(pData, m_pBitmap, m_dwWidth*m_dwHeight);DWORD i,j;int lineByte = (m_dwWidth * m_flag / 8 + 3) / 4 * 4;int pixelByte = m_flag/ 8;for(i = 1; i < m_dwHeight-1; i++){for(j = 1; j < m_dwWidth-1; j++){*(JUNZHI+i*lineByte+j*pixelByte)=(*(pData+i*lineByte+j*pixelByte)+ *(pData+(i-1)*lineByte+j*pixelByte)+ *(pData+(i+1)*lineByte+j*pixelByte)+*(pData+i*lineByte+(j-1)*pixelByte)+ *(pData+i*lineByte+(j+1)*pixelByte)+ *(pData+(i-1)*lineByte+(j-1)*pixelByte)+ *(pData+(i-1)*lineByte+(j+1)*pixelByte)+*(pData+(i+1)*lineByte+(j-1)*pixelByte)+ *(pData+(i+1)*lineByte+(j+1)*pixelByte))/9; } // TODO: Add your command handler code here}memcpy(m_pBitmap, JUNZHI, m_dwWidth*m_dwHeight);if(pData) delete []pData;Invalidate(TRUE);}三、处理结果原始图像均值滤波之后的图像四、实习体会通过本次的实习,我熟悉了均值滤波的算法的原理,通过用c++编程实现灰度图像均值滤波功能,我知道这种滤波是牺牲了图像的清晰度来达到处理噪声的目的,其主要应该用于椒盐噪声,在这次的实习中,我熟悉了C++的编程环境,培养了学习C++的兴趣,同时提高了自己的学习能力,自己解决问题的能力,为以后的更深一步的学习奠定了良好的基础,我更加想学好而且坚定信念一定能学好C++。

数字图像处理课程设计实验报告

数字图像处理课程设计实验报告

江南大学《数字图像处理技术》课程设计报告设计题目:数字图像处理系统班级:数字媒体班姓名:学号:指导老师:日期:2013.7.2一、课程设计目的要求:1、提高分析图像处理问题的能力,进一步巩固在《数字图像处理技术》课程中所学的基本原理与方法。

2、掌握并使用一门计算机语言,进行数字图像处理的应用设计。

二、设计的内容:根据本次课设完成的系统的主要功能如下:利用matlab的GUI 程序设计一个简单的图像处理程序,含有如下基本功能:1、图像的读取、存储、剪切和粘贴2、图像转化为灰度图像3、图像大小的计算4、直方图均衡化规定化的计算5、图像求反、动态压缩6、直接灰度调整7、空域滤波(均值、中值、对比度增强滤波)8、非线性锐化滤波(log滤波、prewitt滤波、sobel卷积、sobel滤波)9、频域增强(高通、低通滤波)三、总体方案设计:(1)、软件的总体设计界面布局如下图:系统的总体设计界面主要分为2个区域:显示区域和操作区域。

显示区域:在原始图像的基础上显示效果图。

操作区域:通过功能菜单实现图像的各种处理。

设计完成后运行的软件界面如下:(2)、功能模块的划分:1、图像的读取、存储、退出2、编辑(还原、剪切、粘贴)3、图像(图像大小的计算、旋转、直方图均衡化规定化的计算、图像求反、动态压缩)4、滤波(直接灰度调整、空域滤波、非线性锐化滤波、频域增强)(3)、系统运行环境:Windows 7 or SP1、Windows Vista SP2、Windows XP SP3、Windows XP x64 Edition SP2、Windows Server 2008 SP2 or R2、Windows Server 2003 R2 ,CPU要求:X86架构且支持SSE2指令集,硬盘空间:典型安装需要3-4G,内存:最低1G,推荐2G。

(4)、选用的工具:matlab7.0,win7X64(5)、主要实现功能的原理:直方图均衡化方法的基本思想是,对在图像中像素个数多的灰度级进行展宽,而对像素个数少的灰度级进行缩减。

数字图像处理课程设计(实验报告)

数字图像处理课程设计(实验报告)

上海理工大学计算机工程学院实验报告实验名称红细胞数目统计课程名称数字图像处理姓名王磊学号0916020226 日期2012-11-27 地点图文信息中心成绩教师韩彦芳一、设计内容:主题:《红细胞数目检测》详细说明:读入红细胞图片,通过中值滤波,开运算,闭运算,以及贴标签等方法获得细胞个数。

二、现实意义:细胞数目检测在现实生活中的意义主要体现在医学上的作用,可通过细胞数目的检测来查看并估计病人或动物的血液中细胞数,如估测血液中红细胞、白细胞、血小板、淋巴细胞等细胞的数目,同时也可检测癌细胞的数目来查看医疗效果,根据这一系列的指标来对病人或动物进行治疗,是具有极其重要的现实作用的。

三、涉及知识内容:1、中值滤波2、开运算3、闭运算4、二值化5、贴标签四、实例分析及截图效果:(1)代码如下:1、程序中定义图像变量说明(1)Image--------------------------------------------------------------原图变量; (2)Image_BW-------------------------------------------------------值化图象;(3)Image_BW_medfilt-------------------------中值滤波后的二值化图像; (4)Optimized_Image_BW---通过“初次二值化图像”与“中值滤波后的二值化图像”进行“或”运算优化图像效果;(5)Reverse_Image_BW--------------------------优化后二值化图象取反;(6)Filled_Image_BW----------------------已填充背景色的二进制图像;(7)Open_Image_BW--------------------------------------开运算后的图像;2、实现代码:%-------图片前期处理-------------------%第一步:读取原图,并显示A = imread('E:\红细胞3.png');Image=rgb2gray(A); %RGB转化成灰度图figure,imshow(Image);title('【原图】');%第二步:进行二值化Theshold = graythresh(Image); %取得图象的全局域值Image_BW = im2bw(Image,Theshold); %二值化图象figure,imshow(Image_BW);title('【初次二值化图像】');%第三步二值化图像进行中值滤波Image_BW_medfilt= medfilt2(Image_BW,[13 13]);figure,imshow(Image_BW_medfilt);title('【中值滤波后的二值化图像】');%第四步:通过“初次二值化图像”与“中值滤波后的二值化图像”进行“或”运算优化图像效果Optimized_Image_BW = Image_BW_medfilt|Image_BW;figure,imshow(Optimized_Image_BW);title('【进行“或”运算优化图像效果】');%第五步:优化后二值化图象取反,保证:‘1’-〉‘白色’,‘0’-〉‘黑色’%方便下面的操作Reverse_Image_BW = ~Optimized_Image_BW;figure,imshow(Reverse_Image_BW);title('【优化后二值化图象取反】');%第六步:填充二进制图像的背景色,去掉细胞内的黑色空隙Filled_Image_BW = bwfill(Reverse_Image_BW,'holes');figure, imshow(Filled_Image_BW);title('【已填充背景色的二进制图像】');%第七步:对图像进行开运算,去掉细胞与细胞之间相粘连的部分SE = strel('disk',4);Open_Image_BW = imopen(Filled_Image_BW,SE);figure, imshow(Open_Image_BW);title(' 【开运算后的图像】');%-------------开始计算细胞数--------------------[Label Number]=bwlabel(Open_Image_BW,8) %初步取得细胞个数Array = bwlabel(Open_Image_BW,8); %取得贴标签处理后的图像Sum = [];%依次统计贴标签后数组for i=1:Number[r,c] = find(Array==i); %获取相同标签号的位置,将位置信息存入[r,c]rc = [r c];Num = length(rc); %取得vc数组的元素的个数Sum([i])=Num; %将元素个数存入Sum数组EndSumN = 0;%假如Sum数组中的元素大于了400,表示有两个细胞相连,像素点较多,即分为两个细胞数for i=1:length(Sum)if(Sum([i])) > 1500N = N+1;endend%------------------统计最终细胞数-----------Number = Number+N3、运行效果截图:第一步:读取原图,并显示A = imread('E:\红细胞3.png ');Image=rgb2gray(A);figure,imshow(Image);title(' 【原图】');第二步:进行二值化Theshold = graythresh(Image);%取得图象的全局域值Image_BW = im2bw(Image,Theshold);%二值化图象figure,imshow(Image_BW);title(' 【初次二值化图像】');第三步:进行二值化图像Image_BW_medfilt= medfilt2(Image_BW,[13 13]); figure,imshow(Image_BW_medfilt);title(' 【中值滤波后的二值化图像】');第四步:通过“初次二值化图像”与“中值滤波后的二值化图像”进行“或”运算优化图像效果Optimized_Image_BW = Image_BW_medfilt|Image_BW;figure,imshow(Optimized_Image_BW);title(' 【进行“或”运算优化图像效果】');第五步:优化后二值化图象取反,保证:'1'为'白色',0'为'黑色'Reverse_Image_BW = ~Optimized_Image_BW;figure,imshow(Reverse_Image_BW);title(' 【优化后二值化图象取反】');第六步:填充二进制图像的背景色,去掉细胞内的黑色空隙Filled_Image_BW = bwfill(Reverse_Image_BW,'holes');figure, imshow(Filled_Image_BW);title(' 【已填充背景色的二进制图像】');第七步:对图像进行开运算,去掉细胞与细胞之间相粘连的部分SE = strel('disk',4);Open_Image_BW = imopen(Filled_Image_BW,SE);figure, imshow(Open_Image_BW);title(' 【开运算后的图像】');第八步:开始计算细胞数[Label Number]=bwlabel(Open_Image_BW,8)%初步取得细胞个数Array = bwlabel(Open_Image_BW,8);%取得贴标签处理后的图像Sum = [];%依次统计贴标签后数组for i=1:Number[r,c] = find(Array==i);%获取相同标签号的位置,将位置信息存入[r,c]rc = [r c];Num = length(rc);%取得vc数组的元素的个数Sum([i])=Num;%将元素个数存入Sum数组endSumN = 0;-----假如Sum数组中的元素大于了1500,表示有两个细胞相连,像素点较多,即分为两个细胞数---for i=1:length(Sum)if(Sum([i])) > 1500N = N+1;endendNumber = Number+N %----统计最终细胞数第九步:最终检测结果:四、算法分析(1)中值滤波利用中值滤波可以对图像进行平滑处理。

《数字图像处理》课程学习报告

《数字图像处理》课程学习报告

《数字图像处理》课程学习报告1.“绪论”学习总结本章节主要学习了图像、像素和数字图像处理的基本概念,了解了自然界中图像的亮度、色彩和空间分布等指标都是以模拟形式出现,模拟图像可以利用光学和电子两种方式进行处理。

图像是由许多个大小和形状一致的像素组成,分辨率可以用单位长度的像素点数表示,也可以用行数×列数来表示图像的大小和分辨率。

利用计算机或者数字设备对图像进行加工分析以满足需求的操作叫做图像处理。

数字图像处理的发展是从20世纪20年代首次实现了图像压缩技术开始,数字图像处理技术最开始应用在航天领域,随着科技发展逐渐扩展到人们生活的各个领域之中。

数字图像处理的目的、任务与特点。

图像处理的目的包含了提高图像的视觉质量、提取图像中某些特征、对图像和视频信息进行压缩、信息可视化和信息安全需要。

图像处理的任务是获取客观世界的景象并转换成数字图像,进行一定的技术手段使其转化成具有新意义的图像。

数字图像处理具有精度高、重现性能好、灵活性高、处理结果可供人观察、技术适用面宽等特点。

数字图像处理主要应用领域有航空航天、生物医学工程、通讯工程、工业自动化和机器人、军事公安、材料科学、生活娱乐以及智能交通。

涉及图像处理的相关技术包括视频、计算机图形、动画、VR、AR等。

2.“图像处理基本知识”学习总结本章节主要学习了人类视觉与色度学基础。

眼睛是人类重要和敏感的感觉器官,人类视觉对颜色的主观感觉可以直观的用色调、色饱和度和亮度来表达。

学习了三基色原理对光通量、发光强度、视敏度、亮度、照度等光度学基本知识有了全面了解。

图像处理硬件和图像处理软件组成了计算机或专用数字设备对图像信息进行处理的系统叫做数字图像处理系统。

学习了数字图像的图像大小、灰度平均值、协方差、灰度标准差以及图像的相关系数统计特征表达算式。

3.“图像的数字化与显示”学习总结本章在了解了图像数字化的基本过程前提下,主要学习了图像数字化的方法,尤其是图像量化中的标量量化和向量量化方法,标量量化的特点是每次只量化一个采样,前后采样间的量化互相独立,向量量化是将一组采样的信号幅度向量在容许的误差范围内用更少的离散向量替代。

图像处理课程设计报告

图像处理课程设计报告

摘要:MATLAB和Mathematica、Maple并称为三大数学软件。

它在数学类科技应用软件在数值计算方面首屈一指。

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

数字图像处理(DigitalImageProcessing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。

数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。

关键词:MA TLAB,数字图像处理一.课程设计目的1、提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。

2、熟悉掌握一门计算机语言,可以进行数字图像的应用处理的开发设计二. 课程设计的内容MATLAB GUI程序设计,利用MATLAB图像处理工具箱。

要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。

然后按照自己拟定的功能要求进行程序设计和调试。

以下几点是程序实现的功能。

1)能对图像文件(bmp、jpg、tiff、gif等)进行打开、保存、另存、打印、退出等功能操作。

(2)能对图像进行直方图统计,包括R直方图,直方图统计,直放图均衡,周长和面积计算,区域图面积统计。

(3)能对图像进行图像变化处理,包括小波变换,傅里叶变换,快速傅里叶变化,快速逆变换,傅里叶逆变换,离散余弦变换。

(4)能对图像进行滤波处理,包括低通滤波,平滑滤波,自适应滤波。

(5)能对图像进行频域增强处理,包括同态滤波,高频锐化。

(6)能对图像进行噪声添加处理,包括椒盐噪声,加性噪声,高斯噪声。

(7)能对图像进行图像滤波器处理,包括高通滤波器,低通滤波器。

数字图像处理--图像处理课程设计 报告

数字图像处理--图像处理课程设计 报告

《数字图像处理》课程设计1、课程设计目的1、提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理与方法。

2、熟悉掌握一门计算机语言,可以进行数字图像的应用处理的开发设计。

2、课程设计要求1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。

尤其是对编程软件的使用有基本的认识。

2、既要虚心接受老师的指导,又要充分发挥主观能动性。

结合课题,独立思考,努力钻研,勤于实践,勇于创新。

3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。

4、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。

5.2实施要求1、理解各种图像处理方法确切意义。

2、独立进行方案的制定,系统结构设计要合理。

3、在程序开发时,则必须清楚主要实现函数的目的和作用,需要在程序书写时说明做适当的注释。

如果使用matlab来进行开发,要理解每个函数的具体意义和适用范围,在写课设报告时,必须要将主要函数的功能和参数做详细的说明。

4、通过多幅不同形式的图像来检测该系统的稳定性和正确性。

用图像平均的方法消除噪声编程:J=imread('1036032.jpg');I = rgb2gray(J);[m,n]=size(I);II1=zeros(m,n);for i=1:16II(:,:,i)=imnoise(I,'gaussian',0,0.01);II1=II1+double(II(:,:,i));if or(or(i==1,i==4),or(i==8,i==16));figure;imshow(uint8(II1/i));endend迭加零均值高斯随机噪声图像4幅同类图像加平均8幅同类图像加平均16幅同类图像加平均用平滑滤波方法消除噪声编程:I=imread('001122.jpg');I=rgb2gray(I);J=imnoise(I,'gaussian',0,0.02);subplot(231),imshow(I);title('原图像');subplot(232),imshow(J);title('添加高斯噪声图像');k1=filter2(fspecial('average',3),J);k2=filter2(fspecial('average',5),J);k3=filter2(fspecial('average',7),J);k4=filter2(fspecial('average',9),J);subplot(233),imshow(uint8(k1));title('3*3模板平滑滤波'); subplot(234),imshow(uint8(k2));title('5*5模板平滑滤波'); subplot(235),imshow(uint8(k3));title('7*7模板平滑滤波'); subplot(236),imshow(uint8(k4));title('9*9模板平滑滤波');用中值滤波方法消除噪声编程:I=imread('1036032.jpg');I=rgb2gray(I);J=imnoise(I,'gaussian',0,0.01);subplot(231),imshow(I);title('原图像');subplot(232),imshow(J);title('添加高斯白噪声图像');k1=medfilt2(J);k2=medfilt2(J,[5 5]);k3=medfilt2(J,[7 7]);k4=medfilt2(J,[9 9]);subplot(233),imshow(k1);title('3×3模板中值滤波') subplot(234),imshow(k2);title('5×5模板中值滤波') subplot(235),imshow(k3);title('7×7模板中值滤波') subplot(236),imshow(k4);title('9×9模板中值滤波')用理想低通滤波方法消除噪声编程:I=imread('001122.jpg');J= rgb2gray(I);J=imnoise(J,'gaussian',0,0.02);subplot(331);imshow(J);J=double(J);f=fft2(J);g=fftshift(f);subplot(332);imshow(log(abs(g)),[]),color(jet(64)); [M,N]=size(f);n1=floor(M/2);n2=floor(N/2);d0=5;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);if d<=d0h=1;elseh=0;endg(i,j)=h*g(i,j);endendg=ifftshift(g);g=uint8(real(ifft2(g)));subplot(333);imshow(g);I=imread('001122.jpg');J= rgb2gray(I);J=imnoise(J,'gaussian',0,0.02);subplot(331);imshow(J);J=double(J);f=fft2(J);g=fftshift(f);subplot(332);imshow(log(abs(g)),[]),color(jet(64)); [M,N]=size(f);n1=floor(M/2);n2=floor(N/2);d0=15;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);if d<=d0h=1;elseh=0;endg(i,j)=h*g(i,j);endendg=ifftshift(g);g=uint8(real(ifft2(g)));subplot(334);imshow(g);I=imread('001122.jpg');J= rgb2gray(I);J=imnoise(J,'gaussian',0,0.02);subplot(331);imshow(J);J=double(J);f=fft2(J);g=fftshift(f);subplot(332);imshow(log(abs(g)),[]),color(jet(64)); [M,N]=size(f);n1=floor(M/2);n2=floor(N/2);d0=45;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);if d<=d0h=1;elseh=0;endg(i,j)=h*g(i,j);endendg=ifftshift(g);g=uint8(real(ifft2(g)));subplot(335);imshow(g);I=imread('001122.jpg');J= rgb2gray(I);J=imnoise(J,'gaussian',0,0.02);subplot(331);imshow(J);J=double(J);f=fft2(J);g=fftshift(f);subplot(332);imshow(log(abs(g)),[]),color(jet(64)); [M,N]=size(f);n1=floor(M/2);n2=floor(N/2);d0=65;for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2);if d<=d0h=1;elseh=0;endg(i,j)=h*g(i,j);endendg=ifftshift(g);g=uint8(real(ifft2(g)));subplot(336);imshow(g);用巴特沃斯低通滤波方法消除噪声I=imread('001122.jpg');I=rgb2gray(I);J=imnoise(I,'gaussian',0,0.04); subplot(121);imshow(J);title('高斯白噪声图像');J=double(J);f=fft2(J);g=fftshift(f);[M,N]=size(f);n=3;d0=20;n1=floor(M/2);n2=floor(N/2);for i=1:Mfor j=1:Nd=sqrt((i-n1)^2+(j-n2)^2); h=1/(1+(d/d0)^(2*n));g(i,j)=h*g(i,j);endendg=ifftshift(g);g=uint8(real(ifft2(g)));subplot(122);imshow(g);title('巴特沃斯低通滤波');峰值信噪比PSNR程序:function result=psnr(in1,in2)in1=imread('a.jpg'); %a为原图像%in2=imread('b.jpg'); %b为调制之后的图像% z=mse(in1,in2);result=10*log10(255.^2/z);function z=mse(x,y)x=double(x);y=double(y);[m,n]=size(x);z=0;for i=1:mfor j=1:nz=z+(x(i,j)-y(i,j)).^2;endendz=z/(m*n);方法一图像平均的方法处理得到信噪比分别如下:ans =7.1689ans =7.2601ans =7.2789ans =7.2876方法二平滑滤波方法处理得到信噪比分别如下:ans =6.0426ans =6.0713ans =6.0955ans =6.1052方法三中值滤波方法处理得到信噪比分别如下:ans =7.1708ans =7.2487ans =7.2830ans =7.3065ans =7.3290方法四理想低通滤波方法处理得到的信噪比:ans =5.9024ans =6.3146ans =6.1266ans =6.0586ans =6.0479方法五巴特沃斯低通滤波方法处理得到的信噪比:ans =5.9042ans =6.2459。

数字图像处理课程设计实验报告

数字图像处理课程设计实验报告

学校代码:10128学号:数字图像处理课程设计题目:数字图像处理及H u u f m a n(或小波变换)编码仿真实现学生姓名:学院:信息工程学院系别:电子信息工程系专业:电子信息工程班级:电子指导教师:2012 年月日内蒙古工业大学课程设计(论文)任务书课程名称:数字图像处理课程设计学院:信息工程班级: ___ 学生姓名:学号:指导教师:数字图像处理课程设计1、课程设计目的通过本课程设计使学生了解数字图像的基本概念,掌握数字图像处理的基本内容,如图像点运算、几何变换、增强处理、图像复原、边缘检测以及图像压缩等的基本原理和Matlab实现方法。

通过本次课程设计,让学生掌握如何学习一门语言,如何进行资料查阅搜集,如何自己解决问题等方法,养成良好的学习习惯。

扩展理论知识,培养学生的综合设计能力。

2、课程设计内容2.1 图像处理基本功能1)数字图像的变换:普通傅里叶变换(ft)与逆变换(ift)、快速傅里叶变换(fft)与逆变换(ifft)、离散余弦变换(DCT),小波变换。

2) 数字图像直方图的统计及绘制等;3)基于Matlab的图像平滑算法实现及应用2.2 图像处理综合功能1) 图像复原程序设计●创建一个仿真运动/均值模糊PSF来模糊一幅图像(图像自选)。

●针对退化设计出复原滤波器,对退化图像进行复原(复原的方法自定)。

●对退化图像进行复原,显示复原前后图像,对复原结果进行分析,并评价复原算法。

2) 给定a,b,c,d概率,进行huffman编码,要求显示原图像、压缩后图像的文件大小、压缩比;或采用小波变换进行编码3、课程设计背景与基本原理3.1课程设计背景数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。

是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。

3.2课程设计基本原理3.2.1傅里叶变换傅里叶变换是可分离和正交变换中的一个特例,对图像的傅里叶变换将图像从图像空间变换到频率空间,从而可利用傅里叶频谱特性进行图像处理。

DSP数字图像处理实验课设

DSP数字图像处理实验课设

华东交通大学理工学院课程设计报告书所属课程名称DSP原理及应用题目数字图像处理系统设计分院电信分院专业班级 12通信2班学生姓名余志强指导教师李杰目录第一章课程设计内容及要求第二章程序设计原理2.1数字图象处理基本原理2.2数字图像处理常用方法2.3图象灰度处理的基本原理2.4图象的反色原理和实现2.5灰度图象二值化原理及意义第三章程序设计步骤第四章总结第一章课程设计内容及要求一、设计内容1了解数字图象处理的基本原理2 学习灰度图象反色处理技术3 学习灰度图象二值化处理技术第二章程序设计原理2、1数字图像处理的基本原理数字图像处理是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。

图像处理最早出现于 20 世纪 50 年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。

数字图像处理作为一门学科大约形成于 20 世纪 60 年代初期。

早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。

图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。

2、2 数字图像处理常用方法:1 )图像变换:由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。

因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。

目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。

2 )图像编码压缩:图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。

压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。

编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理课程设计报告细胞识别目录第一部分1、实验课题名称----------------------------------------------------------------------------------32、实验目的----------------------------------------------------------------------------------------33、实验内容概要----------------------------------------------------------------------------------3第二部分1、建立工程文件----------------------------------------------------------------------------------32、图像信息获取----------------------------------------------------------------------------------43、如何建立下拉菜单----------------------------------------------------------------------------64、标记Mark点------------------------------------------------------------------------------------65、二值化---------------------------------------------------------------------------------------------96、填洞------------------------------------------------------------------------------------------------97、收缩------------------------------------------------------------------------------------------------108、获取中心点--------------------------------------------------------------------------------------119、细胞计数-----------------------------------------------------------------------------------------1310、All-steps-----------------------------------------------------------------------------------------1311、扩展功能---------------------------------------------------------------------------------------14 第三部分12、各步骤结果和错误举例--------------------------------------------------------------------16 第四部分13、心得体会----------------------------------------------------------------------------------------22第一部分1、实验课题:细胞识别2、实验目的:对血液细胞切片图片进行各种处理,最终得出细胞的数目、面积等信息。

3、实验内容概要:基于VC++软件下的细胞识别,通过细胞的标记、二值化、填洞、收缩、获取中心点、计数等过程完成实验目的。

第二部分——实验具体步骤1、建立工程文件①新建MFC工程项目:--MFC AppWizard、工程名②拷贝,到工程文件夹,再向工程里添加③添加变量:m_lpDib 和头文件#include””④:变量(m_lpDib)的new、delete⑤: Serialize()2、图像信息获取①读取图像参数: OnDraw() m_pDib->Draw()如果图像不为空的话,那么就执行如下主要代码:②点击键,建立类向导,在messages中添加OnInitialUpdate()函数,添加代码实现对自动打开固定图片。

③通过鼠标右击,点击建立类向导,在messages中添加OnMouseMove()函数,添加代码实现获取所要信息,即实现鼠标在图像任一位置移动时可以直观的读取相对应位置的信息。

可以在屏幕上显示鼠标所指点的坐标以及RGB、HSI和灰度值,通过HSI的可以选取合适的阈值来找到细胞以及边界。

④为了RGB图像转化为人眼更容易识别的HSI模型,我们可以通过添加成员函数RgbtoHsi来实现这一功能。

HSI模型与RGB模型的转化关系(添加函数时,可以右击类窗口中的,选中add member function,之后选择函数的返回值类型和函数描述,其它默认不变)确定后在里面添加实现函数功能的代码。

3、添加下拉菜单在resourceview那栏的找到菜单按键设置双击,后在里面添加所需按键每个按键的ID号为注意在填写为IDR_加菜单大写。

之后右击按键,建立类向导添加按键所需函数4、标记mark分为四步1.找出mark(red)点和maybemark(blue)点2.将maybemark(blue)点变成mark(black red)点3.将mark(black red)点变成edge(yellow(fullred&&fullgreen))点4.edge点滤波基本思想:Mark点指的是我们要寻找的细胞内的点。

我们先获取每一个像素点的RGB 分量,然后我们将其转化成HSI分量,将H分量进行归一化,因为S的范围是0到1,所以我们要进行尺度的一致,这样才具有可计算性。

然后我们通过每个像素点的H分量和S分量的值与细胞内部的H分量和S分量计算欧几里得距离,设定一个Mark门限值(我们这里将MarkDoor设置为,大家可以行设置合适的参数),小于这个门限值我们就当做是细胞的内部,然后对细胞进行标记(Red)。

还需要设定一个Maybe Mark门限值(我们这里将Maybe MarkDoor设置为,大家可以行设置合适的参数),我们大于Mark门限值小于Maybe Mark 门限值时,我们暂时看成是细胞,我们进行Maybe Mark的标记(Blue)。

否则的话,我们需要考虑,一些不是Mark和Maybe Mark点的*lpSrc==0我们区别一下赋值为1,*lpSrc==255我们区别一下赋值为254,*(lpSrc+1)==255我们区别一下赋值为254.这样的话,我们在后面判断是否为Mark点的时候,我们只需要判断*lpSrc是否为0就可以了,判断Maybe Mark 点时只需要判断*(lpSrc)是否为255就可以了。

对于边缘的判断只需要判断*(lpSrc+1)是否为255就可以了。

将细胞标记为Mark用红色(255,0,0)标记出来,将可能是的细胞标记为MayBe Mark 用蓝色(0,0,255)标记出来。

将MayBeMark To Mark的区域用亮红(128,0,0)表示,将不可能是细胞的区域、细胞边界分别用绿色标记出来。

操作过程:(1)根据H、S的欧几里得距离sqrt(s2+h2)来大致的确定哪些是细胞(Mark)和可能是细胞(Maybe Mark)的点。

(2)根据Maybe Mark点周围的情况,如果它的上下左右四个方向有Mark点,则将Maybe Mark点变成Mark点。

(3)用Sobel算子来做边缘的提取边界(0,255,255)(255,255,0),使用3*3的模板,使用欧几里得距离来判断是否为边缘。

两种Sobel算子如下:主要代码如下:doubletmp1=pixel[0]+2*pixel[1]+pixel[2]-pixel[6]-2*pixel[7]-pixel[8]; doubletmp2=pixel[0]+2*pixel[3]+pixel[6]-pixel[2]-2*pixel[5]-pixel[8]; double edge=sqrt(tmp1*tmp1+tmp2*tmp2);if(edge>edgeDoor)*(lpDst+1)=255;adius<(j).radius) pt=(i);*/(i).x=(x+x0)/2;=(y+y0)/2;(i).radius=max(i).radius,(j).radius)+4;pt=pt=(i);d)在无相近点的情况下,若半径小于8,则删除。

主要代码如下:if(bdelete){("去掉潜在的错误(圆r<8 Redpen)后数目=%d",());MessageBox(msg);}e)两圆相交,若其中一圆非相交部分面积小于50%,则删除主要代码如下:if (total<Pi*r0*r0* ,(int)(tota/()+.5),*min[0]/,*max[0]/,*min[1]/,*max[1]/,*min[2]/,*max[2]/;10、All-steps可以一次性实现细胞识别的所有操作步骤设置控制按键的权限,点击update_command_ui ,键入控制条件每步操作时给cellprocess设置不同数值,表示那步进行过,只能进行规定的下步操作,从而在运行过程中放置按键误触导致程序崩溃。

11、扩展:区域选择:建立类向导:OnButtonDown 和OnButtonUp 键入代码:在OnDraw中添加下列代码注意:bool 变量m_bDrag要定义在文件头部,定义在会出现第一次区域选择时出现错误。

添加复位按键:点击该键后会重新读取图像(和图像自动打开代码一样)第三部分12、各步骤结果和错误举例①各步骤结果图a.Mark(Red)& MayBe Mark(Blue)maybemark to mark(black red)edge information and edge filtertwovaluefillholesshrinkfindcentercount出现的错误举例:Mousemove 程序中出现问题:1.错误:没有加#include ""头文件2.错误error C2248: 'm_wndStatusBar' : cannot access protected member declared in class 'CMainFrame'需将protected: 和.cpp文件仍然存在解决方案:先保存workspace,然后关闭工程,删除此工程目录中的.ncb文件,重新打开workspace原因:classview显示混乱在类中添加的成员变量和成员函数不能显示出来,即使显示出来了变量或函数,双击后不能跳至正确的位置。

相关文档
最新文档