数字图像处理基础作业

合集下载

数字图像处理作业

数字图像处理作业

1. Give a single intensity transformation function for spreading the intensities of an image so the lowest intensity is 0 and the highest is L-1. [为了扩展一幅图像的灰度,使其最低灰度为0、最高灰度为L-1,请给出一个单调的变换函数。

]Answer: Let f denote the original image. First subtract the minimum value of f denoted f min from f to yield a function whose minimum value is 0:Next divide g1 by its maximum value to yield a function in the range [0,1] and multiply the result by L一1 to yield a function with values in the range [0, L 一1]Keep in mind that f min is a scalar and f is an image.[让f表示原始图像。

首先从图像函数f中减掉f的最小值f min, 然后生成一个新的函数g1,它的最小值为0:接下来让g1的最大值除g1得到另一新的函数,它的值域在[0,1]区间,然后再乘上L一1,得到值域为[0, L一1]的新函数。

请注意f min是一个标量,而f是一个图像。

2.Explain why the discrete histogram equalization technique does not,in general,yield a flat histogram. [请解释为什么离散直方图均衡化技术一般不能得到平坦的直方图。

数字图像处理-作业题及部分答案解析

数字图像处理-作业题及部分答案解析

数字图像处理-作业题及部分答案解析1.数字图像与连续图像相比具有哪些优点?连续图像f(x,y与数字图像I(c,r中各量的含义是什么?它们有何联系和区别? (To be compared with an analog image, what are the advantages of a digital image? Let f(x,y be an analog image,I(r, c be a digital image, please give explanation and comparison for defined variables: f/I, x/r,and y/c2.图像处理可分为哪三个阶段? 它们是如何划分的?各有什么特点?(We can divide "imageprocessing"into 3 stages,what are they? how they are divided?What are their features?答:低级处理---低层操作,强调图像之间的变换,是一个从图像到图像的过程;中级处理---中层操作,主要对图像中感兴趣的目标进行检测和测量,从而建立对图像的描述,是一个从图像到数值或符号的过程;高级处理---高层操作,研究图像中各目标的性质和相互联系,得出对图像内容含义的理解以及对原来客观场景的解释;3.试从结构和功能等角度分析人类视觉中最基本的几个要素是什么?什么是马赫带效应? 什么是同时对比度?它们反映了什么共同问题? (According to the structure and function of the eyes,what are the basic elements in human vision? What is the Mach Band Effect? What is Simultaneous Contrast? What common facts can we infer from both Mach Band Effect and Simultaneous Contrast?答:人的视觉系统趋向于过高或过低估计不同亮度区域边界的现象称为“马赫带”效应;同时对比度指的是人的视觉系统对某个区域感觉到的亮度除了依赖于它本身的强度,还与背景有关.马赫带效应和同时对比度现象表明人所感觉到的亮度并不是强度的简单函数.4.比较说明像素邻域、连接、通路以及连通基本概念的联系与区别。

完整版数字图像处理作业题及部分答案

完整版数字图像处理作业题及部分答案

1.数字图像与连续图像相比具有哪些优点?连续图像f(x,y)与数字图像I(c,r)中各量的含义是什么?它们有何联系和区别? (To be compared with an analog image, what are the advantagesof a digital image? Let f(x,y) be an analog image, I(r, c) be a digital image, please giveexplanation and comparison for defined variables: f/I, x/r, and y/c)2.图像处理可分为哪三个阶段? 它们是如何划分的?各有什么特点? (We can divide image processing into 3 stages, what are they? how they are divided? What are their features?)答:低级处理---低层操作,强调图像之间的变换,是一个从图像到图像的过程;中级处理---中层操作,主要对图像中感兴趣的目标进行检测和测量,从而建立对图像的描述,是一个从图像到数值或符号的过程;高级处理---高层操作,研究图像中各目标的性质和相互联系,得出对图像内容含义的理解以及对原来客观场景的解释;3.试从结构和功能等角度分析人类视觉中最基本的几个要素是什么?什么是马赫带效应? 什么是同时对比度?它们反映了什么共同问题? (According to the structure and function of theeyes, what are the basic elements in human vision? What is the Mach Band Effect? What is Simultaneous Contrast? What common facts can we infer from both Mach Band Effect and Simultaneous Contrast?)答:人的视觉系统趋向于过高或过低估计不同亮度区域边界的现象称为“马赫带”效应;同时对比度指的是人的视觉系统对某个区域感觉到的亮度除了依赖于它本身的强度,还与背景有关. 马赫带效应和同时对比度现象表明人所感觉到的亮度并不是强度的简单函数.4.比较说明像素邻域、连接、通路以及连通基本概念的联系与区别。

硕士研究生《数字图像处理》作业

硕士研究生《数字图像处理》作业

研究生《数字图像处理》考试1. 编写程序完成不同滤波器的图像频域降噪和边缘增强的算法并进行比较,得出结论。

● 图像频域降噪的实验原理与算法分析:图像的能量大部分集中在幅度谱的低频和中频部分,而图像的边缘和噪声对应于高频部分,因此能降低高频成分幅度的滤波器就能减弱噪声的影响,由卷积定理,在频域实现低通滤波的数学表达式:),(),(),(v u F v u H v u G =1. 理想低通滤波器(ILPF )0),(),(01),(D v u D D v u D v u H >≤⎩⎨⎧=2. 巴特沃斯低通滤波器(BLPF ) nD v u D v u H 20),()12(11),(⎥⎦⎤⎢⎣⎡-+=3. 指数型低通滤波器(ELPF ) 2),(0),(nD v u D ev u H ⎥⎦⎤⎢⎣⎡-=● 图像频域降噪的实验过程: 1. 理想低通滤波器程序I=imread('xpy.jpg'); f=double(I); g=fft2(f); g=fftshift(g); [M,N]=size(g); d0=100;m=fix(M/2);n=fix(N/2); for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2); if(d<=d0) h=1; else h=0; endresult(i,j)=h*g(i,j);endend>> result=ifftshift(result);>> J1=ifft2(result);>> J2=uint8(real(J1));>> imshow(J2)2.巴特沃斯低通滤波器程序I=imread('xpy.jpg');f=double(I);g=fft2(f);g=fftshift(g);[M,N]=size(g);nn=2;d0=30;m=fix(M/2);n=fix(N/2);for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);h=1/(1+0.414*(d/d0)^(2*nn));result(i,j)=h*g(i,j);endendresult=ifftshift(result);J1=ifft2(result);J2=uint8(real(J1));imshow(J2)3.高斯低通滤波器程序I=imread('xpy.jpg');f=double(I);g=fft2(f);g=fftshift(g);[M,N]=size(g);d0=100;m=fix(M/2);n=fix(N/2);for i=1:Mfor j=1:Nd=sqrt((i-m)^2+(j-n)^2);h=exp(-(d.^2)./(2*(d0^2)));result(i,j)=h*g(i,j);endendresult=ifftshift(result);J1=ifft2(result);J2=uint8(real(J1));imshow(J2)图像频域降噪的实验结果分析与讨论下面是理想低通滤波器、巴特沃斯低通滤波器、高斯低通滤波器的滤波效果分析与讨论。

《数字图像处理》作业题目

《数字图像处理》作业题目

数字图像处理作业班级:Y100501姓名:**学号:*********一、编写程序完成不同滤波器的图像频域降噪和边缘增强的算法并进行比较,得出结论。

频域降噪。

对图像而言,噪声一般分布在高频区域,而图像真是信息主要集中在低频区,所以,图像降噪一般是利用低通滤波的方法来降噪。

边缘增强。

图像的边缘信息属于细节信息,主要由图像的高频部分决定,所以,边缘增强一般采取高通滤波,分离出高频部分后,再和原频谱进行融合操作,达到边缘增强,改善视觉效果,或者为进一步处理奠定基础的目的。

1频域降噪,主程序如下:I=imread('lena.bmp'); %读入原图像文件J=imnoise(I,'gaussian',0,0.02);%加入高斯白噪声A=ilpf(J,0.4);%理想低通滤波figure,subplot(222);imshow(J);title('加噪声后的图像');subplot(222);imshow(A);title('理想低通滤波');B=blpf(J,0.4,4);%巴特沃斯低通滤波subplot(223);imshow(B);title('巴特沃斯低通滤波');C=glpf(J,0.4);%高斯低通滤波subplot(224);imshow(C);title('高斯低通滤波');用到的滤波器函数的程序代码如下:function O=ilpf(J,p) %理想低通滤波,p是截止频率[f1,f2]=freqspace(size(J),'meshgrid');hd=ones(size(J));r=sqrt(f1.^2+f2.^2);hd(r>p)=0;y=fft2(double(J));y=fftshift(y);ya=y.*hd;ya=ifftshift(ya);ia=ifft2(ya);O=uint8(real(ia));function O=blpf(J,d,n) %巴特沃斯低通滤波器,d是截止频率,n是阶数[f1,f2]=freqspace(size(J),'meshgrid');hd=ones(size(J));r=f1.^2+f2.^2;for i=1:size(J,1)for j=1:size(J,2)t=r(i,j)/(d*d);hd(i,j)=1/(t^n+1);endendy=fft2(double(J));y=fftshift(y);ya=y.*hd;ya=ifftshift(ya);ia=ifft2(ya);O=uint8(real(ia));function O=glpf(J,D) %高斯滤波器,D是截止频率[f1,f2]=freqspace(size(J),'meshgrid');r=f1.^2+f2.^2;Hd=ones(size(J));for i=1:size(J,1)for j=1:size(J,2)t=r(i,j)/(D*D);Hd(i,j)=exp(-t);endendY=fft2(double(J));Y=fftshift(Y);Ya=Y.*Hd;Ya=ifftshift(Ya);ia=ifft2(Ya);O=uint8(real(ia));运行结果如图1所示。

数字图像处理作业题

数字图像处理作业题

数字图像处理作业题1. 以下是一个32级灰度图像(0表示黑色),其中包含了在灰色开始背景上的,带有一个白色标记的,直径是12英寸的黑色留声机唱片。

下面给出了图像的直方图。

试问象素间的间距是多大标记的尺寸是多大[0 0 0 0 100 200 2000 6000 2000 200 100 0 0 200 3000 9000 3000 200 0 0 50 100 400 100 50 0 0 0 0 0 0 0]解:像素数乘以像素间距的平方等于物体的面积(S )。

表示唱片的像素总数:100+200+2000+6000+2000+200+100+200+50+100+400+100 +50=11300 S=22611300⨯=⨯πd d=(英寸) 表示白色标记的像素数为:50+100+400+100+50=700 S=22700r d ⨯=⨯π r=(英寸)2. 下面给出了在黑色背景上的白色台球的20级灰度图像的直方图0表示黑色),这个球是用每立方厘米克的材料制成的。

象素间距是1mm 。

试问球的重量是多少[0 100 500 3000 9000 3000 500 200 100 200 300 500 627 500 300 200 100 0 0 0]解:由直方图可知,表示台球的像素数为:100+200+300+500+627+500+300+200+100=2827S=222827r d ⨯=⨯π r=3cm 球的质量为: )(6.1695.1343g r M =⨯=π 原题:下面给出了在黑色背景上的白色台球的20级灰度图像的直方图0表示黑色),这个球是用每立方厘米克的材料制成的。

象素间距是1mm 。

试问球的重量是多少[0 200 500 3000 9000 3000 500 200 100 200 300 500 627 500 300 200 100 0 0 0]3.图像平滑的直观依据是什么不同的平滑方法是如何看待噪音并使用了何种改进以尽量降低其对边缘的模糊对于平滑的快速性和边缘保持,你有何见解解:图像在生成和传输过程中常受到各种噪声源的干扰和影响而使图像处理效果变差,反映在图像上,噪声使原本均匀和连续变化的灰度突然变大或减小,形成一些虚假的物体边缘或轮廓。

数字图像处理上机作业二

数字图像处理上机作业二

数字图像第二讲作业1.设计一个程序,对一幅灰度图像实现直方图均衡化处理。

画出均衡化前后的图像及其直方图.分析:要实现对一幅灰度图直方图的均衡化处理,须经四步来完成。

首先,获得直方图,及各灰度值对应像素数占总像素数的比例,用矩阵c表示,这是第一次直方图作业的内容。

第二步对c求累加和,得到s矩阵。

第三步,对s进行合理的近似,得到均衡图中的灰度等级。

这里我的处理办法是对s执行s*255操作,得到的值再取uint8(),这样就实现了对s*255的合理近似,即四舍五入,从而得到了新的灰度等级d。

第四步,赋予各像素点新的灰度值,计算出不同灰度等级对应的比例值Ps(sk),这里我用:for j=1:256p(d(j)+1)=p(d(j)+1)+c(j);I2(find(I==j))=d(j);end来求得Ps(sk),循环的作用是将灰度等级d(j)相同的各j对应的原灰度值比例c 累加起来。

I2(find(I==j))=d(j)是将灰度值为j的像素点的灰度值换为d(j);p(d(j)+1)中加1的作用是避免出现p(0)而进行的处理。

代码及注释如下:function junheng(x) % x为要分析的图像名加单引号I=imread(x);b=size(I);a=zeros(1,256); %a为一个1*256的矩阵分别记录灰度为0到255的像素的个数for m=1:b(1) %两个for语句将整张图的所有像素都扫描一遍for n=1:b(2)a(I(m,n)+1)= a(I(m,n)+1)+1; %将灰度为I(m,n)的像素个数存储在%a(I(m,n)+1)中,因为matlab里没有a(0)endendn=0:255;c=a/sum(a); %c为个灰度像素数占总像素数的比例subplot(2,2,1);bar(n,c);title('直方图Pr(rk)'); %画出直方图s=zeros(1,256);s(1)=c(1);for k=2:256s(k)=s(k-1)+c(k);end %s为Pr(rk)的累加和subplot(2,2,2);bar(n,s);title('sk'); %画出sk的图形d=uint8(s*255); %d是对s的合理近似值,即四舍五入p=zeros(1,256);I2=I*0;for j=1:256p(d(j)+1)=p(d(j)+1)+c(j);I2(find(I==j))=d(j);end %以d为灰度值,计算相同d值对应的c值的累加和f imwrite(I2,'junheng.bmp');subplot(2,2,3);bar(n,p);title('均衡化直方图Ps(sk)') %画出均衡化直方图figure;bar(n,c);title('直方图Pr(rk)'); %单独显示直方图figure;bar(n,p);title('均衡化直方图Ps(sk)') %单独显示均衡后直方图figure;subplot(1,2,1);imshow(x);title('原图'); %显示原图subplot(1,2,2);imshow('junheng.bmp');title('均衡后图');%显示均衡化之后图形运行:在命令窗口中输入junheng(‘Lenna.bmp’),输出如下四幅图:这幅图体现了整个程序设计的思路,先由直方图Pr(rk)到累加和的sk图形,最后到均衡图Ps(sk).这两幅图是单独显示的原直方图和均衡化后的直方图。

数字图像处理上机作业一.

数字图像处理上机作业一.

数字图像处理上机作业一1.设计一个程序,绘制出一幅灰度图象的直方图。

Solution:代码及代码的说明:%作用:返回灰度矩阵a,并画出直方图function a=zhifangtu(x) % x为要分析的图像名加单引号I=imread(x);b=size(I);a=zeros(1,256); % a为一个1*256的矩阵分别记录灰度为0到255的像%的个数for m=1:b(1) %两个for语句将整张图的所有像素都扫描一遍for n=1:b(2)a(I(m,n)+1)= a(I(m,n)+1)+1; %将灰度为I(m,n)的像素个数存储在%a(I(m,n)+1)中,因为matlab里没有%a(0)endendn=0:255;bar(n,a);%画出直方图s=sum(a) %查看直方图的总的面积等于这张图的总像素值实验结果及分析:在命令窗口中输入zhifangtu('Lenna.bmp')返回s =262144,以及灰度矩阵a,同时有如下直方图输出:分析及结论:在命令窗口中用size命令可查知Lenna.bmp是512*512的,返回的s =262144恰等于512*512,说明所编的直方图的程序恰将所有的像素点都统计了,直方图的总面积等于像素总数。

直方图的作用也就是将一张图中不同灰度值对应像素数的一个统计。

在这个程序的编写中应注意a(I(m,n)+1)= a(I(m,n)+1)+1 不能写成a(I(m,n))= a(I(m,n))+1 ,应为在matlab中矩阵表示没有a(0),若某个像素点的灰度值是0,就会出错,故应写成a(I(m,n)+1)= a(I(m,n)+1)+1形式。

2.对同一场景但模糊程度不一样的三张数字图像绘制出其直方图, 计算每一幅图象所有像素灰度的方差。

图象的清晰度同灰度方差什么关系?Solution:代码及代码的说明:%作用:绘出模糊程度不一样的三张数字图像的直方图,并输出各自灰度方差I1=imread('tu1.bmp');I1=rgb2gray(I1); %转换为灰度图像imwrite(I1,'tu0.bmp'); %由于直方图只能对灰度图作用,故先将其转为灰度图subplot(2,2,1);zhifangtu('tu0.bmp');title('tu1直方图'); %绘出tu1.bmp的直方图k1=size(I1);I1=single(I1);I1=(I1-mean(mean(I1)')).^2; %个像素灰度值减去平均灰%值后再平方t1=sum(sum(I1)')/k1(1)/k1(2), %输出tu1.bmp的所有像素灰度的方差subplot(2,2,2);zhifangtu('tu2.bmp');title('tu2直方图'); %绘出tu2.bmp的直方图I2=imread('tu2.bmp');k2=size(I2);I2=single(I2);I2=(I2-mean(mean(I2)')).^2; %个像素灰度值减去平均灰度值后再%平方t2=sum(sum(I2)')/k2(1)/k2(2), %输出tu2.bmp的所有像素灰度的方差subplot(2,2,3);zhifangtu('tu3.bmp');title('tu3直方图'); %绘出tu3.bmp的直方图I3=imread('tu3.bmp');k3=size(I3);I3=single(I3);I3=(I3-mean(mean(I3)')).^2; %个像素灰度值减去平均灰度值%后再平方t3=sum(sum(I3)')/k3(1)/k3(2), %输出tu3.bmp的所有像素灰度的方差figure;subplot(2,2,1);imshow('tu1.bmp');title('tu1图'); %绘出tu1.bmp的图subplot(2,2,2);imshow('tu2.bmp');title('tu2图'); %绘出tu1.bmp的图subplot(2,2,3);imshow('tu3.bmp');title('tu3图'); %绘出tu1.bmp的图实验结果及分析:上述代码执行后,输出t1 = 7.3027e+003,t2= 6.5808e+003,t3=5.4860e+003;同时输出如下直方图:原始图:分析及结论:tu1,tu2,tu3三幅图是依次变模糊的,三张图的所有像素灰度方差依次为t1 = t1 = 7.3027e+003,t2= 6.5808e+003,t3=5.4860e+003,它们是依次变小的,可知图象的清晰度随灰度方差的变小而变得模糊。

数字图像处理作业

数字图像处理作业

DISP11、说明图象数字化与图象空间分辨率之间的关系。

答:图像数字化包括两个过程:采样和量化。

而图像的空间分辨率是在图像采样过程中选择和产生的。

空间分辨率用来衡量数字图像对模拟图像空间坐标数字化的精度。

2、说明图象数字化与图象灰度分辨率之间的关系。

答:图像数字化包括两个过程:采样和量化。

而图像灰度分辨率是在图像量化过程中选择和产生的。

灰度分辨率是只对应同一模拟图像的亮度分布进行量化操作所采用的不同量化级数,也就是说可以用不同的灰度级数来表示同一图像的灰度分布。

3、看图说明伪彩色图象采集卡的工作原理,并说明LUT的原理和作用。

答:模拟图像数据由摄像头采集后,经A/D转换器处理,转化成数字信号,传给帧处理器经过其处理后,然后查询LUT表,经过D/A转换器输出RGB三色。

LUT(显示查找表)实际上就是一张像素灰度值的映射表,它将实际采样到的像素灰度值经过一定的变换,变成了另外一个与之对应的灰度值,这样可以很容易根据需求得到相应的颜色,它的优点在于易于调整、起到突出图像的有用信息、增强图像的光对比度的作用。

DISP21、粗略画出下列图象的傅立叶变换图象:变换后的图像如下:(从左至右)2、证明付里叶变换的可分离性及快速算法可行性。

答:可分离性:对于二维傅里叶变换,若把y看成一个常数,则可得到沿x方向的u=0,1,……,N-1的一维傅里叶变换,再将y看成一个变量,x不变,则可得到y方向上v=0,1,……,N-1的一维傅里叶变换,因此二维傅里叶变换可分离。

快速算法可行性:假设N是2的L次方,对于有N个点的傅里叶变换,需要完成N*N次复数乘法和N*(N-1)次复数加法,而对于快速算法,则有(N/2)*L个蝶形算法,因此运算量为(N/2)*㏒2N个复乘和N㏒2N个复加,在N较大时,计算量比DFT少很多。

证明:可分离性:F(u,v)=(1/N)∑∑f(x,y)exp[-j2π(ux+vy)/N]其变换核g(x,y,u,v)= exp[-j2π(ux+vy)/N]= exp(-j2πux/N)*exp(-j2πvy/N)所以,F(u,v)=(1/N)∑{[∑f(x,y)exp(-j2πux/N)]exp(-j2πvy/N)}这相当于先对x进行傅里叶变换,再对y进行傅里叶变换,可分离性证毕。

数字图像处理作业

数字图像处理作业

结合每个人的本专业学科、工作应用, 谈谈数字图像处理的关系或在本专业的应用?答:数字图像处理技术的应用几乎无处不在, 例如有的U 盘和电脑安装了指纹识别系统, 气象中心对云图变化的分析系统, 上网视频聊天室的图像传输系统, 计算机阅卷系统, 车牌识别系统, 邮编识别系统等等, 都是实际工作和生活中对数字图像处理的应用。

除前面介绍的例子之外, 试举一些其它的图像应用的工程例子。

答:在工程中的应用也很广泛, 而且有十分大的发展前景, 这里举两个例子:制烟厂里检查香烟数量的系统, 有效的保证了没盒烟中香烟的数量, 而且大大提高了效率;地下资源的勘测系统, 可以对地下资源进行不同光谱分析, 较为可观的得到地下资源信息。

图像处理与计算机图形学的区别与联系是什么?区别: 数字图像处理对客观存在的图像惊醒处理和分析, 从而得到有用信息的学科。

计算机图形学: 对客观存在的或想象中的事物通过建立数学模型, 用图像的方式表达出来。

联系:都是用计算机进行点、面处理, 使用光栅显示器等。

在图像处理中, 需要用计算机图形学中的交互技术和手段输入图形、图像和控制相应的过程;在计算机图形学中, 也经常采用图像处理操作来帮助合成模型的图像。

画出视觉信息在眼球内(视网膜中)的传输过程模型示意图, 并扼要说明?如下图:瞳孔直径可调节, 控制进入人眼内的光通量;而晶状体可调节曲率, 改变焦距, 使不同距离的图在视网膜上成像画出黑白视觉扩展模型, 并略加说明。

黑白视觉扩展模型:2-3 什么叫图像逼真度和图像可懂度? 采用归一化方均误差NMSE 计算下面两幅数字图像的逼真度111111(,)111(,)101111111f j k f j k ∧⎡⎤⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦答: 图像逼真度: 描述被评价图像与标准图像的偏离程度图像可懂度: 表示图像能向人或机器提供信息的能力由公式计算得NMSE=1/92-4 给出一幅4bit 的图像A (见下图)。

数字图像处理作业题

数字图像处理作业题

数字图像处理作业题1.设一幅图像大小为M×N,灰度级为256,试求图像的数据量。

解:灰度级为256,则每个像素点占8位则图像总共有8×M×N bit,即M×N字节2.什么是直方图?直方图有哪些基本性质?直方图阈值的含义是什么?从图像直方图能够获得图像的哪些信息?答:直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数,其横坐标是灰度级,纵坐标是该灰度出现的频率,即等于该灰度的像素的个数与总像素之比。

直方图的性质:(1)直方图只包含一幅图像中某一灰度值的像素出现的概率,而丢失了其所在位置的信息。

(2)图像与直方图之间是多对一的映射关系。

(3)如果一幅图像由多个不连续的区域组成,并且每个区域的直方图已知,则整幅图的直方图是这些区域的直方图之和。

直方图阈值是指直方图中像素数目相对较少,可以用于分割图像中背景与目标的灰度级对应的数值。

直方图反映了一幅图像中的灰度级与出现这种灰度的概率之间的关系,展现了图像最基本的统计特征,同时,通过直方图可以获得图像的灰度阈值和综合光密度等信息。

3.用Laplacian-4算子求出课本P54 3.5中图像的边缘图像,并确定图像二值化的阈值(边缘点数不超过总像素数的10%)解题思路:(1)根据Laplacian-4算子模板求出原图像的边缘图像,即图像中的每个像素点对应的边缘图像的灰度值为原图像中上、下、左、右四个方向的像素点的灰度值之和减去该像素点的灰度值的4倍再取绝对值。

(2)原图像矩阵中位于边缘的像素点在边缘图像矩阵中直接置为1(因为利用Laplacian-4算子计算时,这些点四个方向不齐)(3)画出边缘图像的灰度直方图,得出边缘图像中概率小于等于10%的灰度值即为二值化的阈值T4.课本P67 4.7参考课本P60-61例题4.15.一幅图像共有8个灰度级,每一灰度级概率分布如下表所示,要求对其进行直方图均衡化处理,并画出均衡化后的图像的直方图。

数字图像处理第二章作业

数字图像处理第二章作业

第二章数字图像处理的基本概念2. 图像数字化包括那两个过程?它们对数字化图像质量有何影响?答:图像数字化包括采样和量化两个过程。

采样:将空间上连续的图像变换成离散点的操作称为采样。

量化:将像素灰度转换成离散的整数值得过程叫量化。

影响:一般来说,采样间隔越大,所得图像像素越少,空间分辨率低,质量差,严重时出现像素呈块状的国际棋盘效应;采样间隔越小,所得图像像素数越多,空间分辨率高,图像质量好,但数据量大。

量化等级越多,所得图像层次越丰富,灰度分辨率高,图像质量好,但数据量大;量化等级越少,图像层次欠丰富,灰度分辨率低,会出现假轮廓现象,图像质量变差,但数据量小.3。

数字化图像的数据量与哪些因素有关?答:数字化前需要决定影像大小(行数M、列数N)和灰度级数G的取值.一般数字图像灰度级数G为2的整数幂。

那么一幅大小为M*N,灰度级数为G的图像所需的存储空间M*N*g(bit),称为图像的数据量.6。

什么是灰度直方图?它有哪些应用?从灰度直方图你能获得图像的哪些信息?答:灰度直方图反映的是一幅图像中各灰度级像素出项的频率之间的关系.以灰度级为横坐标,纵坐标为灰度级的频率,绘制频率同灰度级的关系图就是灰度直方图.应用:通过变换图像的灰度直方图可以,使图像更清晰,达到图像增强的目的。

获得的信息:灰度范围,灰度级的分布,整幅图像的平均亮度。

但不能反映图像像素的位置。

8。

图像处理按功能分有哪几种形式?答:按图像处理的输出形式,图像处理的基本功能可分为三种形式:(1)单幅图像-—>单幅图像;(2)多幅图像—-〉单幅图像;(3)单(或多)幅图像——>数字或符号等.12。

图像特性包括哪些类型?图像特征是图像分析的重要依据,它可以是视觉能分辨的自然特征,也可以是人为定义的某些特性或参数,即人工特征.数字图像的像素亮度、边缘轮廓等属自然特性;图像经过变换得到的频谱和灰度直方图等属人工特征.1、自然特征图像是空间景物反射或者辐射的光谱能量的记录,因而具有光谱特征、几何特征和时相特征。

[正式版]数字图像处理作业ppt资料

[正式版]数字图像处理作业ppt资料
第1章(绪论)作业和思考题:
1. 观察你生活和学习中与数字图像处理有关的事物,把它 们罗列出来。
2. 调查、了解数字图像处理在医学方面都有那些具体应用。 3. 请考虑数字图像处理和信息光学中图像处理的差别。
第2章(数字图像处理基础)作业和思考题:
1.人的视觉要素包含了那些特点? 2. 马赫带效应和同时对比反映了视觉的什么问题? 3. 获得数字图像要经过那几个基本过程,每个过程有什么 作用。 4。图像的空间分辨率和灰度级分辨率对图像有什么影响?
第3章(空间域图像增强)作业和思考题:
1.什么是图像增强? 2. 常用的灰度变换有那些,其特点是什么? 3. 什么是图像的直方图?什么是图像的直方图均衡? 4. 什么是平滑滤波,什么是中值滤波?其作用和特点是什 么? 5. 什么是图像的锐化?
第4章(频率域图像增强)作业和思考题:
1. 简述频率域图像增强的流程? 2. 频域的低通和高通滤波分别对图像的作用是什么? 3 .频域低通滤波法中常有几种滤波器?它们的特点是什么? 4. 什么是同态滤波?
第5章(图像复原)作业和思考题: 马赫带效应和同时对比反映了视觉的什么问题?
试述逆滤波4复原.图的基像本原几理。何变换有什么应用 ?图像几何变换的一般包括哪
它的主要难点是什么?如何克服?
些步骤 ? 第1章(绪论)作业和思考题:
简述Huffman 编码的原理? 什么是伪彩色图像处理? 图像的空间分辨率和灰度级分辨率对图像有什么影响? 观察你生活和学习中与数字图像处理有关的事物,把它们罗列出来。
第8章(图像压缩)作业和思考题:
1.什么是图像压缩?压缩技术为什么对图像而言特别重要? 2. 图像的数据冗余有那些? 3 ..信息熵反应了什么? 4. 简述Huffman 编码的原理? 5. 什么是行程编码? 6.什么是变换编码?

数字图像处理(基本全部答案)

数字图像处理(基本全部答案)

数字图像处理试卷一名词解释(共30分,每题5分)1. 数字图像与数字图像处理数字图像数字图像是指由被称作像素的小块区域组成的二维矩阵。

将物理图像行列划分后,每个小块区域称为像素(pixel)。

数字图像处理指用数字计算机及其它有关数字技术,对图像施加某种运算和处理,从而达到某种预想目的的技术。

2.采样与量化采样是将空域上连续的图像变换成离散采样点集合,是对空间的离散化。

经过采样之后得到的二维离散信号的最小单位是像素。

量化就是把采样点上表示亮暗信息的连续量离散化后,用数值表示出来,是对亮度大小的离散化。

经过采样和量化后,数字图像可以用整数阵列的形式来描述。

3.中值滤波中值滤波是指将当前像元的窗口(或领域)中所有像元灰度由小到大进行排序,中间值作为当前像元的输出值。

4.图像增强将一幅图像中的有用信息进行增强,同时对其无用信息进行抑制,提高图像的可观察性。

5.边缘检测边缘能勾划出目标物体轮廓,使观察者一目了然,包含了丰实的信息(如方向、阶跃性质、形状等),是图像识别中抽取的重要属性。

边缘检测是大多数图像处理必不可少的一步,提供了物体形状的重要信息。

6.图像变换通过数学映射的方法,将空域的图像信息转换到频域、时频域等空间上进行分析。

二简答题(共50分)1.简述数字图像处理的至少4种应用。

(5分)①遥感中,比如土地测绘、气象监测、资源调查、环境污染监测等方面。

②在医学中,比如B超、CT机等方面。

③在通信中,比如可视电话、会议电视、传真等方面。

④在工业生产的质量检测中,比如对食品包装出厂前的质量检查、对机械制品质量的监控和筛选等方面。

⑤在安全保障、公安方面,比如出入口控制、指纹档案、交通管理等。

2.简述二值图像、灰度图像、彩色图像的区别。

(5分)二值图像是指每个像素不是黑,就是白,其灰度值没有中间过渡的图像。

这种图像又称为黑白图像。

二值图像的矩阵取值非常简单,每个像素的值要么是1,要么是0,具有数据量小的特点。

数字图像处理 习题1-基础知识

数字图像处理  习题1-基础知识

第一章引言一.填空题1. 数字图像是用一个数字阵列来表示的图像。

数字阵列中的每个数字,表示数字图像的一个最小单位,称为__像素___。

2. 数字图像处理可以理解为两个方面的操作:一是从图像到图像的处理,如图像增强等;二是__从图像到非图像的一种表示__,如图像测量等。

3. 数字图像处理可以理解为两个方面的操作:一是__,如图像增强等;二是从图像到非图像的一种表示,如图像测量等4. 图像可以分为物理图像和虚拟图像两种。

其中,采用数学的方法,将由概念形成的物体进行表示的图像是___虚拟图像____。

5. 数字图像处理包含很多方面的研究内容。

其中,_____的目的是根据二维平面图像数据构造出三维物体的图像。

二.简答题1. 数字图像处理的主要研究内容包含很多方面,请列出并简述其中的4种。

答:①图像数字化:将一幅图像以数字的形式表示。

主要包括采样和量化两个过程。

②图像增强:将一幅图像中的有用信息进行增强,同时对其无用信息进行抑制,提高图像的可观察性。

③图像的几何变换:改变图像的大小或形状。

④图像变换:通过数学映射的方法,将空域的图像信息转换到频域、时频域等空间上进行分析。

⑤图像识别与理解:通过对图像中各种不同的物体特征进行定量化描述后,将其所期望获得的目标物进行提取,并且对所提取的目标物进行一定的定量分析。

2. 什么是图像识别与理解?答:指通过对图像中各种不同的物体特征进行定量化描述后,将其所期望获得的目标物进行提取,并且对所提取的目标物进行一定的定量分析。

比如要从一幅照片上确定是否包含某个犯罪分子的人脸信息,就需要先将照片上的人脸检测出来,进而将检测出来的人脸区域进行分析,确定其是否是该犯罪分子。

3. 简述数字图像处理的至少3种主要研究内容。

答:①图像数字化:将一幅图像以数字的形式表示。

主要包括采样和量化两个过程。

②图像增强:将一幅图像中的有用信息进行增强,同时对其无用信息进行抑制,提高图像的可观察性。

数字图像处理作业1

数字图像处理作业1

数字图像处理作业1《数字图像处理》2018/9/30作业1.根据个人理解给出灰度图像、比特深度、图像分辨率、图像直方图这几个基本概念内涵。

(1)灰度图像:灰度图像通常有传统单通道灰度和三通道灰度图像之分;传统单通道灰度图:每个像素只采样一种颜色,如果每个采样像素为8bit,那么生成的图像就是颜色从0黑色到256白色不同灰度的图像。

三通道灰度图像:在图像处理中,用RGB三个通道表示真彩色,RGB 取值范围均为0~255。

而RGB灰度图像就是RGB彩色分量相等,我们将彩色图像转换成灰度图像,也就是3个通道(RGB)转换成1个通道。

二值图像是特殊的灰度图,它只有两个值:0表示黑,1表示白,每个像素只需要1bit存储信息。

对于同一张图片,有N个像素,那么,二值图有2的N次方种变化,而8位灰度图有255的N次方种变化,8为三通道RGB图像有255*255*255的N次方种变化。

同样尺寸的图像,保存的信息:二值图<传统单通道灰度图<三通道灰度图像。

图片大小:二值图<传统单通道灰度图<三通道灰度图像。

在Photoshop中查看任何灰度图像,无论是单通道灰度,还是已经转换为三通道RGB,它看起来都是一样的。

这是因为Photoshop 是有颜色管理的,并且知道如何呈现两种不同的格式。

(图1:PS中RGB转化为灰度图)(图2:灰度图)·将彩色图像转换成灰度图像Matlab实现:图像灰度化的算法主要有以下3种:1)最大值法:使转化后的R,G,B得值等于转化前3个值中最大的一个,即:R=G=B=max(R,G,B)这种方法转换的灰度图亮度很高。

2)平均值法:是转化后R,G,B的值为转化前R,G,B的平均值。

即:R=G=B=(R+G+B)/3这种方法产生的灰度图像比较柔和。

3)加权平均值法:按照一定权值,对R,G,B的值加权平均。

由于人眼对绿色最为敏感,红色次之,对蓝色的敏感性最低,因此使将得到较易识别的灰度图像,因此这样得到的灰度图像效果最好。

数字图像处理技术练习

数字图像处理技术练习

1.图像(tú xiànɡ)中每个像素点的灰度值如下图所示:分别求经过邻域(lín yù)平滑模板、邻域高通模板和中值滤波处理后的结果。

其中不能处理的点保持不变如果处理后的值为负数则变为0。

邻域平滑模板,邻域(lín yù)高通模板,中值滤波(lǜb ō)窗口取3×3矩阵,窗口(chuāngkǒu)中心为原点。

2.图像中每个像素点的灰度值如下图所示:分别求经过邻域平滑模板、邻域高通模板和中值滤波处理后的结果。

其中不能处理的点保持不变如果处理后的值为负数则变为0。

邻域平滑模板,邻域高通模板,中值滤波窗口取3×3矩阵,窗口中心为原点。

3.设有以下信源符号w1,w2,w3,w4,w5和概率P(w1)=0.3, P(w2)=0.2,P(w3)=0.2, P(w4)=0.2, P(w5)=0.1。

请对此信源进行Huffman编码,并计算熵,平均码长和编码效率。

(log20.3= -1.737,log20.2= -2.322,log20.1=-3.322)4.设有以下信源符号w1,w2,w3,w4,w5和概率P(w1)=0.5, P(w2)=0.2,P(w3)=0.1, P(w4)=0.1, P(w5)=0.1, 请对此信源进行Huffman编码,并计算熵,平均码长和编码效率。

(log20.5= -1, log20.2= -2.322, log20.1=-3.322) 5.图像中有相邻的四个点A、B、C和D,其灰度值分别为50、10、20和200。

试根据双线性插值法确定(quèdìng)其内部位置P处的灰度值。

6.图像中有相邻(xiānɡ lín)的四个点A、B、C和D,其灰度值分别为20、100、60和80。

试根据双线性插值法确定其内部位置P处的灰度值。

7.(b)图中黑色部分为结构(jiégòu)元素,“+”表示(biǎoshì)原点。

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

1.图像均值化2.图像的Gauss低通和Gauss高通3.对图像进行Gamma变化4.DCT变换,加上量化在反量化,和IDCT这四个题目,如果是对一些进行图像处理的程序员来讲或者很简单,但是我基本不接触图像处理这个方面的(虽然我头上挂着这个牌子),基本原理不同,很难写程序。

不过幸好我同学是搞这个方面的,而且他的讲解能让我很快的知道我应该怎么去处理这个图像,而且通过网络的搜索,我发现wiki上的讲解真的相当的精准阿...不带让人纠结的数学公式,也不会长篇大论,有的就是通俗易懂的步骤和例子。

让人很快能知道我应该怎么都作就能完成这个效果的处理。

这是我一直很喜欢使用wiki的原因,推荐推荐阿....对于这个作业我本打算以最大的速度做完的,也不想真的去对原理进行真正的了解!所以只要知道怎么去做就可以了。

突然想到了那几天前我好像也学习QT,所以想连着这个一起作一次练习。

qt一个gui做的不错的库!而且简单的很...既然使用了QT那就要求我使用C++来写这个程序,C++这个语言,很久很久没使用了,主要是觉得自己对C++好像很陌生了,或者可以说是对面向对象这个思想的陌生。

关于这点,我也很想提出我的一点点想法。

虽然很早就开始使用面向对象去编程,可是好像自己一直没有入门面向对象这种思想。

使用C++的过程好像是将C++当成C来使用,很少很少说一定要使用到类,继承,多态这种特性。

看了很多书说,要学好C++就要放弃一些东西,把面向对象的这些东西学好。

可是面向对象到底是一种什么样的思想呢,有的时候很想用面向对象的思想去写程序,可是有时候却发现自己好像是为了面向对象而面向对象...好似纠结....应该是我经历的还不够吧。

关于这个作业,我最想讲的两个方面是:1.qt中的QImage这个对象,为了能让内存高效的访问,qt通过空间去换取时间的方法来提升效率。

让每一行都能被4B整除,这就是让qt本身会对每一行进行填充的过程,所以将一个一维的图像数据的转换为QImage是一个要小心的过程。

当然其实如果你懂的,那就是一个构造函数的问题,我在这方面犯过错,所以提出来了。

2.关于DCT的变换这个变换的公式很长很复杂,如果按公式来做的话,这个计算量是很大的,所以在网络搜索到一篇论文,好像是通过将其变为矩阵的乘法的运算,能减少相当大的运算量。

据说JPEG 也是用这种方式进行dct的变化的。

使用矩阵的运算简单很多,而且很多东西是很巧妙的联系着的。

关于dct应该是我花时间最多的一个方面,因为开始不懂是怎么样的过程,随便看了以下就开始写程序,最后不但程序有问题,连我改程序的心情都没有了。

直接把那个程序del了,重新写。

在写之前找了不少的论文和资料,在有很大把握了基础下,开始了编码的过程,那天花了5个小时才完成,最后还有一点点的暇眦,不过那个时候时间太晚了,坚持不住就去睡觉了。

第二天花了点时间调试以后,很顺利的完成了,而且变化的速度很快,比我使用公式法快很多。

而且效果很好的样子..让我很开心,这种成功的感觉很久没有了。

我只想把最好的那部分代码贴出来给大家看,DCT变换:当然如果大家需要这个运行的代码可以发email给我(smy19890720@),哈哈很多的bug我可不管的哦....[cpp]view plaincopyprint?1. void pimage::rgb_convert_yuv()2. {3. for(size_t j = 0; j < heigth8; j++)4. {5. for(size_t i = 0; i < width8; i++)6. {7. if(j < heigth && i < width)8. {9. int r = image[j*width*bpp+i*bpp + 2];10. int g = image[j*width*bpp+i*bpp + 1];11. int b = image[j*width*bpp+i*bpp];12. y[j][i] = 0.3 * r + g * 0.59 + b * 0.11;13. u[j][i] = -0.147 *r - 0.289 * g + 0.436 * b;14. v[j][i] = 0.615 * r - 0.515 * g - 0.100 * b;15. y[j][i] = y[j][i] - 128;16.17. //printf("r = %u,g = %u,b = %u\n",r,g,b);18. //printf("y = %d,u = %d,v = %d\n",y[j][i],u[j][i],v[j][i]);19. }20. else21. {22. y[j][i] = 0;23. u[j][i] = 0;24. v[j][i] = 0;25. }26. }27. }28. }29.30. v oid pimage::yuv_convert_rgb()31. {32. for(size_t i = 0; i < heigth8; i++)33. { for(size_t j = 0; j < width8; j++) {34. if(i < heigth && j < width)35. {36. int tmpy = y[i][j] + 128;37. int tmpu = u[i][j];38. int tmpv = v[i][j];39.40. int r = tmpy + (1.13983 * (tmpv));41. int g = tmpy - (0.58 * (tmpv)) - (0.39 *(tmpu));42. int b = tmpy + (2.03211 * (tmpu));43. if(r > 255)44. r = 255;45. if(g > 255)46. g = 255;47. if(b > 255)48. b = 255;49.50. if(r < 0)51. r = 0;52. if(g < 0)53. g = 0;54. if(b < 0)55. b = 0;56.57. //printf("r = %d,g = %d,b = %d\n",r,g,b);58. //printf("y = %d,u = %d,v = %d\n",tmpy,tmpu,tmpv);59.60.61. image[i*width*bpp+j*bpp] = b;62. image[i*width*bpp+j*bpp + 1] = g;63. image[i*width*bpp+j*bpp + 2] = r;64. }65. }66. }67. }68.69. v oid pimage::DCT()70. {71. int tmpy[8][8];72. int tmpu[8][8];73. int tmpv[8][8];74.75. rgb_convert_yuv();76. get_dct(dct,dct_t);77.78. for(int j = 0; j < heigth8/8; j++)79. {80. for(int i = 0; i < width8/8; i++)81. {82. for(int h = 0; h < 8; h++)83. {84. for(int w = 0; w < 8; w++)85. {86. tmpy[h][w] = y[j*8+h][i*8+w];87. tmpu[h][w] = u[j*8+h][i*8+w];88. tmpv[h][w] = v[j*8+h][i*8+w];89. //printf("j = %d,i = %d,h = %d,w = %d\n",j,i,h,w);90. }91. }92.93. matrix_mul(dct,tmpy,dct_t);94. matrix_mul(dct,tmpu,dct_t);95. matrix_mul(dct,tmpv,dct_t);96.97. lianhuay(tmpy);98. lianhuau(tmpu);99. lianhuau(tmpv);100. for(int h = 0; h < 8; h++) 101. {102. for(int w = 0; w < 8; w++) 103. {104. y[j*8+h][i*8+w] = tmpy[h][w]; 105. u[j*8+h][i*8+w] = tmpu[h][w]; 106. v[j*8+h][i*8+w] = tmpv[h][w]; 107. }108.109. }110. }111. }112. }113.114. void pimage::IDCT()115. {116. int tmpy[8][8];117. int tmpu[8][8];118. int tmpv[8][8];119.120.121. for(int j = 0; j < heigth8/8; j++) 122. {123. for(int i = 0; i < width8/8; i++) 124. {125. for(int h = 0; h < 8; h++) 126. {127. for(int w = 0; w < 8; w++) 128. {129. tmpy[h][w] = y[j*8+h][i*8+w]; 130. tmpu[h][w] = u[j*8+h][i*8+w]; 131. tmpv[h][w] = v[j*8+h][i*8+w]; 132. }133. }134.135. ilianhuay(tmpy);136. ilianhuau(tmpu);137. ilianhuau(tmpv);138.139. matrix_mul(dct_t,tmpy,dct);140. matrix_mul(dct_t,tmpu,dct);141. matrix_mul(dct_t,tmpv,dct);142.143. for(int h = 0; h < 8; h++)144. {145. for(int w = 0; w < 8; w++)146. {147. y[j*8+h][i*8+w] = tmpy[h][w];148. u[j*8+h][i*8+w] = tmpu[h][w];149. v[j*8+h][i*8+w] = tmpv[h][w];150. }151. }152.153. }154. }155. yuv_convert_rgb();156. }157. void pimage::get_dct(float (*dct)[8],float (*dct_T)[8]) 158. {159. for(int i = 0; i < 8; i++)160. {161. dct[0][i] = 1.0 / sqrt(8);162. dct_T[i][0] = dct[0][i];163. }164.165. for(int i = 1; i < 8; i++)166. for(int j = 0; j < 8; j++)167. {168. dct[i][j] = sqrt(2.0/8)*cos((2*j+1)*i*PI/(2.0*8));169. dct_T[j][i] = dct[i][j];170. }171. }172.173. void pimage::matrix_mul(float (*first)[8],int (*sec)[8],float (*third)[8]) 174. {175. float tmp[8][8];176. float tmp1[8][8];177.178. for(int i = 0;i < 8;i++)179. {180. for(int j = 0;j < 8;j++)181. {182. tmp[i][j] = 0;183. for(int k = 0;k < 8;k++)184. {185. tmp[i][j] += (first[i][k] * sec[k][j]);186. }187. }188. }189.190. for(int i = 0;i < 8; i++)191. {192. for(int j = 0;j < 8; j++)193. {194. tmp1[i][j] = 0;195. for(int k = 0; k < 8;k++)196. {197. tmp1[i][j] += (tmp[i][k] * third[k][j]);198. }199. }200. }201.202. for(int i = 0;i < 8;i++)203. {204. for(int j = 0;j < 8;j++)205. {206. sec[i][j] = round(tmp1[i][j]); 207. }208. }209. }210.211. int pimage::round(float thiz) 212. {213. if(fabs(thiz - (int)thiz) >= (1.0/2)) 214. {215. if(thiz > 0)216. {217. return (int)thiz + 1;218. }219. else220. {221. return (int)thiz - 1;222. }223. }224. else225. {226. return (int)thiz;227. }228. }229.230.231. void pimage::lianhuay(int (*thiz)[8]) 232. {233. static int matrix[8][8] = {234. {16,11,10,16,24,40,51,61}, 235. {12,12,14,19,26,58,60,55}, 236. {14,13,16,24,40,57,69,56}, 237. {14,17,22,29,51,87,80,62},238. {18,22,37,56,68,109,103,77},239. {24,35,55,64,81,104,113,92},240. {49,64,78,87,103,121,120,101},241. {72,92,95,98,112,100,103,99},242. };243.244. for(int i = 0; i < 8; i++)245. {246. for(int j = 0; j < 8; j++)247. {248. thiz[i][j] = round(thiz[i][j]*1.0/matrix[i][j]); 249. }250. }251. }252.253. void pimage::ilianhuay(int (*thiz)[8])254. {255. static int matrix[8][8] = {256. {16,11,10,16,24,40,51,61},257. {12,12,14,19,26,58,60,55},258. {14,13,16,24,40,57,69,56},259. {14,17,22,29,51,87,80,62},260. {18,22,37,56,68,109,103,77},261. {24,35,55,64,81,104,113,92},262. {49,64,78,87,103,121,120,101},263. {72,92,95,98,112,100,103,99},264. };265.266. for(int i = 0; i < 8; i++)267. {268. for(int j = 0; j < 8; j++)269. {270. thiz[i][j] = thiz[i][j] * matrix[i][j];271. }272. }273. }274.275. void pimage::lianhuau(int (*thiz)[8])276. {277. static int matrix[8][8] = {278. {17,18,24,47,99,99,99,99},279. {18,21,26,66,99,99,99,99},280. {24,26,56,99,99,99,99,99},281. {47,66,99,99,99,99,99,99},282. {99,99,99,99,99,99,99,99},283. {99,99,99,99,99,99,99,99},284. {99,99,99,99,99,99,99,99},285. {99,99,99,99,99,99,99,99},286. };287.288. for(int i = 0; i < 8; i++)289. {290. for(int j = 0; j < 8; j++)291. {292. thiz[i][j] = round(thiz[i][j]*1.0/matrix[i][j]); 293. }294. }295. }296.297. void pimage::ilianhuau(int (*thiz)[8])298. {299. static int matrix[8][8] = {300. {17,18,24,47,99,99,99,99},301. {18,21,26,66,99,99,99,99},302. {24,26,56,99,99,99,99,99},303. {47,66,99,99,99,99,99,99},304. {99,99,99,99,99,99,99,99},305. {99,99,99,99,99,99,99,99},306. {99,99,99,99,99,99,99,99},307. {99,99,99,99,99,99,99,99},308. };309.310. for(int i = 0; i < 8; i++)311. {312. for(int j = 0; j < 8; j++)313. {314. thiz[i][j] = thiz[i][j] * matrix[i][j];315. }316. }317. }318.319. void pimage::get_psnr()320. {321. uchar *tmp_image = (uchar*)calloc(width*heigth*bpp,sizeof(uchar)); 322. memcpy(tmp_image,image,width*heigth*bpp);323. DCT();324. IDCT();325.326. double psnr_r = 0;327. double psnr_g = 0;328. double psnr_b = 0;329.330. double mse_r = 0;331. double mse_g = 0;332. double mse_b = 0;333.334. for(int i = 0; i < this->heigth; i++)335. for(int j = 0; j < this->width; j++)336. {337. mse_b = mse_b + (image[i*this->width*bpp+j*bpp] - tmp_image[i* width*bpp+j*bpp]) * (image[i*this->width*bpp+j*bpp] - tmp_image[i*width*b pp+j*bpp]);338. mse_g = mse_g + (image[i*this->width*bpp+j*bpp + 1] - tmp_imag e[i*width*bpp+j*bpp + 1]) * (image[i*this->width*bpp+j*bpp + 1] - tmp_imag e[i*width*bpp+j*bpp + 1]);339. mse_r = mse_r + (image[i*this->width*bpp+j*bpp + 2] - tmp_image [i*width*bpp+j*bpp + 2]) * (image[i*this->width*bpp+j*bpp + 2] - tmp_image[i*width*bpp+j*bpp + 2]);340. }341. mse_r = mse_r / (heigth * width);342. mse_g = mse_g / (heigth * width);343. mse_b = mse_b / (heigth * width);344.345. psnr_r = 20 * log10(255/sqrt(mse_r));346. psnr_g = 20 * log10(255/sqrt(mse_g));347. psnr_b = 20 * log10(255/sqrt(mse_b));348.349. printf("r = %lf,g = %lf,b = %lf\n",psnr_r,psnr_g,psnr_b);350. free(tmp_image);351. }。

相关文档
最新文档