图像清晰度评价

1.灰度差

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.边缘强度

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

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.

关于数据的来源:笔者在一台伺服机器上按照固定距离移动相机镜头拍摄得到,以共享到下面的链接,可自由使用

测试样本:图像清晰度评价测试样本-其它其他资源-CSDN下载

LIVE Image Quality Assessment Database

Image & Video Quality Assessment Algorithms 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值