首页 > 代码库 > 图像清晰度评价
图像清晰度评价
http://blog.csdn.net/liuuze5/article/details/50773160
1.灰度差
[plain] view plain copy
- function out_val=difference_absolute(img);
- I=rgb2gray(img);
- [m,n]=size(I);
- f=0.0;
- I=double(I);
- for x=1:m-1;
- for y=1:n-1;
- Ix=I(x+1,y)-I(x,y);
- Iy=I(x,y+1)-I(x,y);
- f=f+abs(Ix)+abs(Iy);
- end
- end
- out_val=f/m/n;
2.边缘强度
[plain] view plain copy
- function outval = edge_intensity(img)
- % OUTVAL = EDGE_INTENSITY(IMG)
- if nargin == 1
- img=rgb2gray(img);
- img = double(img);
- % Create horizontal sobel matrix
- w = fspecial(‘sobel‘);
- % Get the size of img
- [r c ] = size(img);
- gx = imfilter(img,w,‘replicate‘);
- gy = imfilter(img,w‘,‘replicate‘);
- for m = 1 : r
- for n = 1 : c
- g(m,n) = sqrt(gx(m,n)*gx(m,n) + gy(m,n)*gy(m,n));
- end
- end
- outval = mean(mean(g));
- else
- error(‘Wrong number of input!‘);
- end
3.main
[plain] view plain copy
- clear all;
- close all;
- clc;
- PathName = ‘.\2\‘;
- FileName = ‘.jpg‘ ;
- n=20
- tic
- for ii=1:n
- imageName=strcat(PathName,num2str(ii),FileName);
- im = imread(imageName);
- a(ii)=difference_absolute(im);
- b(ii)=edge_intensity(im);
- end
- toc;
- a=a/max(a);
- b=b/max(b);
- figure(1);plot(a,‘-r+‘);hold on
- plot(b,‘-b*‘);hold on
- xlabel(‘len.s position‘);
- ylabel(‘value‘);
- title(‘清晰度评价函数‘);
4.输入图片
5.对两组结果归一化后如下所示:
第14张图片最清晰,与人眼观察结果一致。
对另一组图片进行测试,结果如下:
处理效果上边缘算子明显优于灰度差,但时间上消耗很大。
边缘算子:96.872847 seconds.
灰度差: 4.645993 seconds.
图像清晰度评价
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。