数字图像处理图像基本运算
- 格式:ppt
- 大小:6.19 MB
- 文档页数:92
数字图像处理领域的⼆⼗四个典型算法数字图像处理领域的⼆⼗四个典型算法及vc实现、第⼀章⼀、256⾊转灰度图⼆、Walsh变换三、⼆值化变换四、阈值变换五、傅⽴叶变换六、离散余弦变换七、⾼斯平滑⼋、图像平移九、图像缩放⼗、图像旋转数字图像处理领域的⼆⼗四个典型算法及vc实现、第三章图像处理,是对图像进⾏分析、加⼯、和处理,使其满⾜视觉、⼼理以及其他要求的技术。
图像处理是信号处理在图像域上的⼀个应⽤。
⽬前⼤多数的图像是以数字形式存储,因⽽图像处理很多情况下指数字图像处理。
本⽂接下来,简单粗略介绍下数字图像处理领域中的24个经典算法,然后全部算法⽤vc实现。
由于篇幅所限,只给出某⼀算法的主体代码。
ok,请细看。
⼀、256⾊转灰度图算法介绍(百度百科):什么叫灰度图?任何颜⾊都有红、绿、蓝三原⾊组成,假如原来某点的颜⾊为RGB(R,G,B),那么,我们可以通过下⾯⼏种⽅法,将其转换为灰度: 1.浮点算法:Gray=R*0.3+G*0.59+B*0.11 2.整数⽅法:Gray=(R*30+G*59+B*11)/100 3.移位⽅法:Gray =(R*28+G*151+B*77)>>8; 4.平均值法:Gray=(R+G+B)/3; 5.仅取绿⾊:Gray=G; 通过上述任⼀种⽅法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统⼀⽤Gray替换,形成新的颜⾊RGB(Gray,Gray,Gray),⽤它替换原来的RGB(R,G,B)就是灰度图了。
灰度分为256阶。
所以,⽤灰度表⽰的图像称作灰度图。
程序实现: ok,知道了什么叫灰度图,下⾯,咱们就来实现此256⾊灰度图。
这个Convert256toGray(),即是将256⾊位图转化为灰度图:void Convert256toGray(HDIB hDIB) { LPSTR lpDIB; // 由DIB句柄得到DIB指针并锁定DIB lpDIB = (LPSTR) ::GlobalLock((HGLOBAL)hDIB); // 指向DIB象素数据区的指针 LPSTR lpDIBBits; // 指向DIB象素的指针 BYTE * lpSrc; // 图像宽度 LONG lWidth; // 图像⾼度 LONG lHeight; // 图像每⾏的字节数 LONG lLineBytes; // 指向BITMAPINFO结构的指针(Win3.0) LPBITMAPINFO lpbmi; // 指向BITMAPCOREINFO结构的指针 LPBITMAPCOREINFO lpbmc; // 获取指向BITMAPINFO结构的指针(Win3.0) lpbmi = (LPBITMAPINFO)lpDIB; // 获取指向BITMAPCOREINFO结构的指针 lpbmc = (LPBITMAPCOREINFO)lpDIB; // 灰度映射表 BYTE bMap[256]; // 计算灰度映射表(保存各个颜⾊的灰度值),并更新DIB调⾊板 int i,j; for (i = 0; i < 256;i ++) { // 计算该颜⾊对应的灰度值 bMap[i] = (BYTE)(0.299 * lpbmi->bmiColors[i].rgbRed + 0.587 * lpbmi->bmiColors[i].rgbGreen + 0.114 * lpbmi->bmiColors[i].rgbBlue + 0.5); // 更新DIB调⾊板红⾊分量 lpbmi->bmiColors[i].rgbRed = i; // 更新DIB调⾊板绿⾊分量 lpbmi->bmiColors[i].rgbGreen = i; // 更新DIB调⾊板蓝⾊分量 lpbmi->bmiColors[i].rgbBlue = i; // 更新DIB调⾊板保留位 lpbmi->bmiColors[i].rgbReserved = 0; } // 找到DIB图像象素起始位置 lpDIBBits = ::FindDIBBits(lpDIB); // 获取图像宽度 lWidth = ::DIBWidth(lpDIB); // 获取图像⾼度 lHeight = ::DIBHeight(lpDIB); // 计算图像每⾏的字节数 lLineBytes = WIDTHBYTES(lWidth * 8); // 更换每个象素的颜⾊索引(即按照灰度映射表换成灰度值) //逐⾏扫描 for(i = 0; i < lHeight; i++) { //逐列扫描 for(j = 0; j < lWidth; j++) { // 指向DIB第i⾏,第j个象素的指针 lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - i) + j; // 变换 *lpSrc = bMap[*lpSrc]; } } //解除锁定 ::GlobalUnlock ((HGLOBAL)hDIB); }变换效果(以下若⽆特别说明,图⽰的右边部分都是为某⼀算法变换之后的效果):程序实现:函数名称:WALSH()参数:double * f - 指向时域值的指针double * F - 指向频域值的指针r -2的幂数返回值:⽆。
数字图像处理_图像基本运算图像基本运算1点运算线性点运算是指输⼊图像的灰度级与输出图像呈线性关系。
s=ar+b(r为输⼊灰度值,s为相应点的输出灰度值)。
当a=1,b=0时,新图像与原图像相同;当a=1,b≠0时,新图像是原图像所有像素的灰度值上移或下移,是整个图像在显⽰时更亮或更暗;当a>1时,新图像对⽐度增加;当a<1时,新图像对⽐度降低;当a<0时,暗区域将变亮,亮区域将变暗,点运算完成了图像求补; ⾮线性点运算是指输⼊与输出为⾮线性关系,常见的⾮线性灰度变换为对数变换和幂次变换,对数变换⼀般形式为:s=clog(1+r)其中c为⼀常数,并假设r≥0.此变换使窄带低灰度输⼊图像映射为宽带输出值,相对的是输出灰度的⾼调整。
1 x=imread('D:/picture/DiaoChan.jpg');2 subplot(2,2,1)3 imshow(x);4 title('原图');5 J=0.3*x+50/255;6 subplot(2,2,2);7 imshow(J);8 title('线性点变换');9 subplot(2,2,3);10 x1=im2double(x);11 H=2*log(1+x1);12 imshow(H)13 title('⾮线性点运算');%对数运算幂次变换⼀般形式:s=cr^γ幂级数γ部分值把窄带暗值映射到宽带输出值下⾯是⾮线性点运算的幂运算1 I=imread('D:/picture/DiaoChan.jpg');2 subplot(2,2,1);3 imshow(I);title('原始图像','fontsize',9);4 subplot(2,2,2);5 imshow(imadjust(I,[],[],0.5));title('Gamma=0.5');7 imshow(imadjust(I,[],[],1));title('Gamma=1');8 subplot(2,2,4);9 imshow(imadjust(I,[],[],1.5));title('Gamma=1.5');2代数运算和逻辑运算加法运算去噪处理1 clear all2 i=imread('lenagray.jpg');3 imshow(i)4 j=imnoise(i,'gaussian',0,0.05);5 [m,n]=size(i);6 k=zeros(m,n);7for l=1:1008 j=imnoise(i,'gaussian',0,0.05);9 j1=im2double(j);10 k=k+j1;11 End12 k=k/100;13 subplot(1,3,1),imshow(i),title('原始图像')14 subplot(1,3,2),imshow(j),title('加噪图像')15 subplot(1,3,3),imshow(k),title(‘求平均后的减法运算提取噪声1 I=imread(‘lena.jpg’);2 J=imnoise (I,‘lena.jpg’,0,0.02);3 K=imsubtract(J,I);4 K1=255-K;5 figure;imshow(I);7 figure;imshow(K1);乘法运算改变图像灰度级1 I=imread('D:/picture/SunShangXiang.jpg')2 I=im2double(I);3 J=immultiply(I,1.2);4 K=immultiply(I,2);5 subplot(1,3,1),imshow(I);subplot(1,3,2),imshow(J);6 subplot(1,3,3);imshow(K);逻辑运算1 A=zeros(128);2 A(40:67,60:100)=1;3 figure(1)4 imshow(A);5 B=zeros(128);6 B(50:80,40:70)=1;7 figure(2)8 imshow(2);9 C=and(A,B);%与10 figure(3);11 imshow(3);12 D=or(A,B);%或13 figure(4);14 imshow(4);15 E=not(A);%⾮16 figure(5);17 imshow(E);3⼏何运算平移运算实现图像的平移1 I=imread('lenagray.jpg');2 subplot(1,2,1);3 imshow(I);4 [M,N]=size(I);g=zeros(M,N);5 a=20;b=20;6for i=1:M7for j=1:N8if((i-a>0)&(i-a<M)&(j-b>0)&(j-b<N)) 9 g(i,j)=I(i-a,j-b);10else11 g(i,j)=0;12 end13 end14 end15 subplot(1,2,2);imshow(uint8(g));⽔平镜像变换1 I=imread('lena.jpg');2 subplot(121);imshow(I);3 [M,N]=size(I);g=zeros(M,N);4for i=1:M5for j=1:N6 g(i,j)=I(i,N-j+1);7 end8 end9 subplot(122);imshow(uint8(g));垂直镜像变换1 I=imread('lena.jpg');2 subplot(121);imshow(I);3 [M,N]=size(I);g=zeros(M,N);4for i=1:M5for j=1:N6 g(i,j)=I(M-i+1,j);7 end8 end9 subplot(122);imshow(uint8(g));图像的旋转1 x=imread('D:/picture/DiaoChan.jpg');2 imshow(x);3 j=imrotate(x,45,'bilinear');4 k=imrotate(x,45,'bilinear','crop');5 subplot(1,3,1),imshow(x);6 title(‘原图')7 subplot(1,3,2),imshow(j);8 title(‘旋转图(显⽰全部)')9 subplot(1,3,3),imshow(k);10 title(‘旋转图(截取局部)')⼏种插值法⽐较1 i=imread('lena.jpg');2 j1=imresize(i,10,'nearest');3 j2=imresize(i,10,'bilinear');4 j3=imresize(i,10,'bicubic');5 subplot(1,4,1),imshow(i);title(‘原始图像')6 subplot(1,4,2),imshow(j1);title(‘最近邻法')7 subplot(1,4,3),imshow(j2);title(‘双线性插值法')8 subplot(1,4,4),imshow(j3);title(‘三次内插法')放缩变换1 x=imread('D:/picture/ZiXia.jpg')2 subplot(2,3,1)3 imshow(x);4 title('原图');5 Large=imresize(x,1.5);6 subplot(2,3,2)7 imshow(Large);8 title('扩⼤为1.5');9 Small=imresize(x,0.1);10 subplot(2,3,3)11 imshow(Small);12 title('缩⼩为0.3');13 subplot(2,3,4)14 df=imresize(x,[600700],'nearest');15 imshow(df)16 title('600*700');17 df1=imresize(x,[300400],'nearest');18 subplot(2,3,5)19 imshow(df1)20 title('300*400');后记:(1)MATLAB基础知识回顾1:crtl+R是对选中的区域注释,ctrl+T是取消注释2:有的代码中点运算如O=a.*I+b/255 ,其中b除以255原因是:灰度数据有两种表式⽅法:⼀种是⽤unit8类型,取值0~255;另⼀种是double类型,取值0~1。
实验报告实验名称:图像处理姓名:刘强班级:电信1102学号:1404110128实验一图像变换实验——图像点运算、几何变换及正交变换一、实验条件PC机数字图像处理实验教学软件大量样图二、实验目的1、学习使用“数字图像处理实验教学软件系统”,能够进行图像处理方面的简单操作;2、熟悉图像点运算、几何变换及正交变换的基本原理,了解编程实现的具体步骤;3、观察图像的灰度直方图,明确直方图的作用与意义;4、观察图像点运算与几何变换的结果,比较不同参数条件下的变换效果;5、观察图像正交变换的结果,明确图像的空间频率分布情况。
三、实验原理1、图像灰度直方图、点运算与几何变换的基本原理及编程实现步骤图像灰度直方图就是数字图像处理中一个最简单、最有用的工具,它描述了一幅图像的灰度分布情况,为图像的相关处理操作提供了基本信息。
图像点运算就是一种简单而重要的处理技术,它能让用户改变图像数据占据的灰度范围。
点运算可以瞧作就是“从象素到象素”的复制操作,而这种复制操作就是通过灰度变换函数实现的。
如果输入图像为A(x,y),输出图像为B(x,y),则点运算可以表示为:B(x,y)=f[A(x,y)]其中f(x)被称为灰度变换(Gray Scale Transformation,GST)函数,它描述了输入灰度值与输出灰度值之间的转换关系。
一旦灰度变换函数确定,该点运算就完全确定下来了。
另外,点运算处理将改变图像的灰度直方图分布。
点运算又被称为对比度增强、对比度拉伸或灰度变换。
点运算一般包括灰度的线性变换、阈值变换、窗口变换、灰度拉伸与均衡等。
图像几何变换就是图像的一种基本变换,通常包括图像镜像变换、图像转置、图像平移、图像缩放与图像旋转等,其理论基础主要就是一些矩阵运算,详细原理可以参考有关书籍。
实验系统提供了图像灰度直方图、点运算与几何变换相关内容的文字说明,用户在操作过程中可以参考。
下面以图像点运算中的阈值变换为例给出编程实现的程序流程图,如下:2、图像正交变换的基本原理及编程实现步骤数字图像的处理方法主要有空域法与频域法,点运算与几何变换属于空域法。
Part2:解答题和计算题2.1 图像处理基础一、简答题1、解释模拟图像和数字图像的概念。
(10分)模拟图像在水平与垂直方向上灰度变化都是连续的,因此有时又将模拟图像称之为连续图像( continuous image)数字图像是指把模拟图像分解成被称作像素的若干小离散点,并将各像素的颜色值用量化的离散值,即整数值来表示的图像。
因此,又将数字图像称为离散图像(discrete image)。
像素是组成数字图像的基本元素。
2、简述图像的采样和量化过程,并解释图像的空间分辨率和灰度分辨率的概念。
(10分) 空间采样将在空间上连续的图像转换成离散的采样点(即像素)集的操作。
由于图像是二维分布的信息,所以采样是在x轴和y轴两个方向上进行。
量化把采样后所得的各像素的灰度值从模拟量到离散量的转换称为图像灰度的量化。
量化值一般用整数来表示。
考虑人眼的识别能力,目前非特殊用途的图像均为8bit量化,即用0~255描述“黑~白”。
空间分辨率(spatial resolution ):图像空间中可分辨的最小细节。
一般用单位长度上采样的像素数目或单位长度上的线对数目表示。
灰度分辨率(contrast resolution ):图像灰度级中可分辨的最小变化。
一般用灰度级或比特数表示。
3、在理想情况下获得一幅数字图像时,采样和量化间隔越小,图像的画面效果越好。
当一幅图像的数据量被限制在一个范围内时,如何考虑图像的采样和量化,使得图像的表现效果尽可能的好? (10 分)当限定数字图像的大小时, 为了得到质量较好的图像,一般可采用如下原则:①对缓变的图像,应该细量化,粗采样,以避免假轮廓②对细节丰富的图像,应细采样,粗量化,以避免模糊4、图像量化时,如果量化级别较少时会发生什么现象?为什么? (10分)如果量化级比较少,会出现伪轮廓现象。
原因:量化过程是将连续的颜色划分到有限个级别中,必然会导致颜色的信息缺失。
当量化级别数量级过小时,图像灰度分辨率就会降低,颜色层次就会欠丰富,不同的颜色之间过渡就会变得突然,所以可能会导致伪轮廓现象。
实验一 数字图像基本操作及灰度调整一.实验目的1.掌握读、写图像的基本方法;2.掌握MATLAB 语言中图像数据与信息的读取方法;3.理解图像灰度变换处理在图像增强的作用;4.掌握绘制灰度直方图的方法,理解灰度直方图的灰度变换及均衡化的方法。
二.实验基本原理1. 灰度变换灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。
1) 图像反转灰度级范围为[0, L-1]的图像反转可由下式获得r L s --=12) 对数运算:有时原图的动态范围太大,超出某些显示设备的允许动态范围,如直接使用原图,则一部分细节可能丢失。
解决的方法是对原图进行灰度压缩,如对数变换:s = c log(1 + r ),c 为常数,r ≥ 03) 幂次变换:0,0,≥≥=γγc cr s4) 对比拉伸:在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸:其对应的数学表达式为:2. 直方图均衡化灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最基本的统计特征。
依据定义,在离散形式下, 用r k 代表离散灰度级,用p r (r k )代表p r (r ),并且有下式成立:nn r P k k r =)( 1,,2,1,010-=≤≤l k r k 式中:n k 为图像中出现r k 级灰度的像素数,n 是图像像素总数,而n k /n 即为频数。
直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。
假定变换函数为ωωd p r T s r r)()(0⎰==(a) Lena 图像 (b) Lena 图像的直方图图1-1 Lena 图像及直方图当灰度级是离散值时,可用频数近似代替概率值,即1,,1,010)(-=≤≤=l k r n n r p k k k r式中:l 是灰度级的总数目,p r (r k )是取第k 级灰度值的概率,n k 是图像中出现第k 级灰度的次数,n 是图像中像素总数。
数字图像处理复习第一章概述1. 图像的概念及数字图像的概念。
图-是物体透射或反射光的分布,是客观存在的。
像-是人的视觉系统对图的接受在大脑中形成的印象或反映,图像是图和像的有机结合,是客观世界能量或状态以可视化形式在二维平面上的投影。
数字图像是物体的一个数字表示,是以数字格式存放的图像。
2. 数字图像处理的概念。
数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程,以提高图像的实用性。
3. 数字图像处理的优点。
精度高、再现性好、通用性、灵活性强第二章数字图像处理基础1. 人眼视觉系统的基本构造P14 图2.1人眼横截面简图2. 亮度的适应和鉴别人眼对光亮度的适应性非常高,一般情况下跨度达到10的10次方量级,从伸手不见五指到闪光灯强曝光。
3.光强度与主观亮度曲线。
P15 图2.4光强度与主观亮度的关系曲线4. 图像的数字化及表达。
(采样和量化的概念)图像获取即图像的数字化过程,包括扫描、采样和量化。
采样:将空间上连续的图像变成离散点的操作 量化:将像素灰度转换成离散的整数值的过程5. 图像采样过程中决定采样空间分辨率最重要的两个参数。
采样间隔、采样孔径6. 图像量化过程中量化级数与量化灰度取值范围之间的关系量化等级越多,所得图像层次越丰富,灰度分辨率高,图像质量好,但数据量大;量化等级越少,图像层次欠丰富,灰度分辨率低,会出现假轮廓现象,图像质量变差,但数据量小.7. 像素的相邻领域概念(4领域,8领域)。
设为位于坐标处的一个像素(x+1,y ),(x-1,y ),(x,y+1),(x,y-1) 组成的4邻域,用)(4p N 表示。
(x+1,y+1),(x+1,y-1),(x-1,y+1),(x-1,y-1) 像素集用)p (N D 表示)(4p N 和)p (N D 合起来称为p 的8邻域,用)(8p N 表示。
8. 领域空间内像素距离的计算。
(欧式距离,街区距离,棋盘距离) p 和q 之间的欧式距离定义为: 22)()(),(t y s x q p D e -+-=p 和q 之间的4D 距离(也叫城市街区距离)定义为: t y s x q p D -+-=),(4p 和q 之间的8D 距离(也叫棋盘距离)定义为: ),max(),(8t y s x q p D --=第三章 图像的基本运算(书后练习3.2,3.9 ) 1. 线性点运算过程中各参数表示的含义(k ,b )。
《数字图像处理》课程教学大纲Digital image processing一、教学目标及教学要求数字图像处理课程是智能科学与技术、数字媒体技术等专业的专业必修课。
主要目标及要求是通过该课程的学习,使学生初步掌握数字图像处理的基本概念、基本原理、基本技术和基本处理方法,了解数字图像的获取、存储、传输、显示等方面的方法、技术及应用,为学习相关的数字媒体、视频媒体和机器视觉等课程,以及今后从事数字媒体、视频媒体、图像处理和计算机视觉等领域的技术研究与系统开发打下坚实的理论与技术基础。
二、本课程的重点和难点(一)课程教学重点教学重点内容包括:图像的表示,空间分辨率和灰度级分辨率,图像直方图和直方图均衡,基于空间平滑滤波的图像增强方法,基于空间锐化滤波的图像增强方法,图像的傅里叶频谱及其特性分析,图像编码模型、霍夫曼编码和变换编码,图像的边缘特征及其检测方法,彩色模型,二值形态学中的有腐蚀运算和膨胀运算。
(二)课程教学难点教学难点包括:直方图均衡,二维离散傅里叶变换的若干重要性质、图像的傅里叶频谱及其特性分析,变换编码,小波变换的概念、嵌入式零树小波编码,图像的纹理特征及其描述和提取方法,Matlab图像处理算法编程。
三、主要实践性教学环节及要求本课程的实验及实践性环节要求使用Matlab软件平台,编写程序实现相关的数字图像处理算法及功能,并进行实验验证。
课程实验与实践共10学时,分别为:实验一:图像基本运算实验(2学时)。
实验二:图像平滑滤波去噪实验(2学时)。
实验三:图像中值滤波去噪实验(2学时)。
实验四:图像边缘检测实验(2学时)。
相关图像处理算法的课堂演示验证(2学时)。
要求每个学生在总结实验准备、实验过程和收获体会的基础上,写出实验报告。
四、采用的教学手段和方法利用多媒体课件梳理课程内容和讲授思路,合理运用启发式教学方式激发学生的思考力,采用讨论式教学方式增强教学过程的互动效果,理论教授与应用实例编程实践相结合,提高学生的分析和解决问题的能力。
《数字图像处理》课程教学大纲一、课程基本信息课程编号:dq04091010课程名称:数字图像处理Digital Image Processing学时/学分:32/2实验学时:12课程类别:专业类课程课程性质:必修课适用专业:电子信息工程开设学期:第六学期先行课程:概率与数理统计、线性代数、信号与系统、数字信号处理责任单位:电气与信息工程学院电子信息工程系二、课程简介《数字图像处理》是面向电子信息工程专业开设的一门专业课程。
通过本课程的学习,学生将获得图像处理的系统设计、相关软件设计与开发知识,并理解图像处理的设计需求、设计原理、设计方法、具有相应实践能力。
能够运用深入的图像处理方法进行数学建模及仿真验证;掌握多层次的实验设计、实现及结果分析的方法,并能将其用于复杂工程实践中。
并为学习后续课程以及从事与本专业相关的工程技术等工作奠定必要的理论基础。
三、课程目标通过本课程的学习,应达到的目标及能力如下:目标1:能够利用数字图像处理所需的数学工具。
学会图像分析的基本方法,具备解决图像应用问题的初步能力;目标2:能够学会数字图像处理基本算法,分析数字图像处理领域复杂工程问题;目标3:能够自行编写MATLAB程序,仿真实现图像处理分析过程,准确筛选、处理、分析实验数据,得出合理有效的结论,规范撰写实验报告。
四、课程目标对毕业要求的支撑五、课程教学内容(一)数字图像处理概述1.主要教学内容:图像的基本概念;数字图像处理,计算机视觉,计算机图形学;数字图像处理系统结构;数字图像处理的主要研究内容;图像的数字化方法;数字图像的数值描述;数字图像的位图文件结构;数字图像的灰度直方图。
2.知识点与能力点要求:(1)知识点:要求学生了解什么是图像以及图像的分类,了解数字图像处理、计算机视觉、计算机图形学之间的区别,了解数字图像处理系统结构。
了解图像的采样和量化方法;掌握BMP位图文件的结构,掌握数字图像灰度直方图的定义、性质和用途。