日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

11种图像清晰度评价函数

發布時間:2023/12/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 11种图像清晰度评价函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

典型無參考圖像清晰度評價(可用作對焦評價函數)

Tenengrad評價函數

Tenengrad函數是一種由Tenenbaum提出的,基于梯度的常用圖像清晰度評價函數。特南梯度。
在圖像處理中,一般認為對焦好的圖像具有更尖銳的邊緣,故具有更大的梯度函數值。
Tenengrad函數使用Sobel算子提取水平和垂直方向的梯度值,求其平方和作為評價函數。

具體過程如下:

設Sobel卷積核為,則圖像在點處的梯度

定義該圖像的Tenengrad值為:(其中為圖像中像素總數)這個求了平均

或不求平均:評價函數F(k):

其中:T是給定的邊緣檢測閾值。

?View Code

?

?Laplacian?梯度函數

利用Laplacian算子對圖像進行模板卷積得到圖像的高頻分量,然后可以對圖像的高頻分量求和,用高頻分量和作為圖像的清晰度評價標準。

對于一個M×N像素的圖像,每個像素的亮度為g(x,y),進行濾波模板卷積后每個像素點值為z(x,y)。則圖像清晰度評價函數:

Laplacian算子:z(x,y)=g(x-1,y)+g(x+1,y)+g(x,y-1)+g(x,y+1)一4g(x,y)

梯度算子為水平方向和垂直方向兩個,高通濾波算子只有一個

SMD(灰度差分絕對值之和,Sum of?Modulus of gray Difference?)函數

?用差分絕對值代替乘方和開方,即對點(x,y)及其鄰近點的灰度作差分運算,提取該點灰度值的變化大小,得出圖像灰度差分絕對值之和算子。

灰度差分絕對值之和具有較好的計算性能,但其缺點也很明顯,即在焦點附近靈敏度不高,即該函數在極值點附近過于平坦,從而導致聚焦精度難以提高。

在文章《一種快速高靈敏度聚焦評價函數》中提出了一種新的評價函數,稱之為灰度差分絕對值乘積法,即對每一個像素領域兩個灰度差相乘后再逐個像素累加。

?

“基于圖像處理的自動對焦技術研究”,對焦過程中的一個重要階段是圖像清晰度評價,博主自己用MATLAB實現了4類清晰度評價函數:基于圖像梯度的清晰度評價函數、頻域評價函數、信息熵評價函數、統計學評價函數,總計11種。博主之前沒有用過MATLAB,完全是本科論文需要,沒辦法對著別人的代碼生看,雖然沒學過matlab的基礎知識,但是畢竟學過好幾門語言,都是差不多的,還是能看懂的。需要哪部分知識就在網上搜,雖然沒有一樣的,但是會搜到相關的,看懂了之后,實現自己的代碼。

其中基于圖像梯度的清晰度評價函數博主很大一部分借鑒他人上傳的畢設代碼,在此附上鏈接。

http://www.pudn.com/Download/item/id/1394579.html

一、基于圖像梯度的清晰度評價函數?

這類算法的實質是圖像處理知識,因為博主報考研究生時選的圖像處理方向,所以本科畢業論文找了一位這方面的指導老師。

正焦的清晰圖像比模糊的離焦圖像邊緣更加銳利清晰,邊緣像素灰度值變化大,因而有更大的梯度值。在進行圖像處理時,將圖像看作二維離散矩陣,利用梯度函數獲取圖像灰度信息,以此來評判圖像清晰度。在離散信號中梯度表現為差分形式。常用的梯度函數有:能量梯度函數EOG、Roberts函數、Tenengrad函數、Brenner函數、方差Variance函數、拉普拉斯Laplace函數等等。下面分別對其進行介紹,其中表示對應像素點的灰度值。

1.能量梯度函數(Energy of Gradient,EOG)

將 x 方向和 y 方向的相鄰像素的灰度值之差[]的平方和作為每個像素點的梯度值,對所有像素梯度值累加作為清晰度評價函數值,表達式如下所示:

matlab代碼如下:

%EOG(Energy Of Grad)
?N1 = 5; ? ? ?%要處理的圖片張數
?A = zeros(1,N1); ?%存儲每一幅圖像清晰度評價值
?X = zeros(1,N1); ?%存儲做歸一化處理后的評價值
tic ? ? %計時
for L=1: N1?
?I=imread([int2str(L),'.jpg']); %連續讀取圖片
?I=double(I);?
?[M N]=size(I);?
?FI=0;?
?for x=1:M-1?
? ? ?for y=1:N-1?
? ? ? ? ? % x方向和y方向的相鄰像素灰度值只差的的平方和作為清晰度值
? ? ? ? ?FI=FI+(I(x+1,y)-I(x,y))*(I(x+1,y)-I(x,y))+(I(x,y+1)-I(x,y))*(I(x,y+1)-I(x,y));
? ? ?end?
?end?
??
?A(1,L) = FI;?
end?
time=toc
%--------------------------------?
%對圖像清晰度值做歸一化處理,線性函數歸一化公式
?for W = 1:N1?
? ? ?C = max(A);?
? ? ?D = min(A);?
? ? ?E = C-D;?
? ? ?R = (A(1,W) - D)/(E);?
? ? ?X(1,W) = R;?
?end?
%做曲線擬合輸出函數曲線 ?
x1=[-20 -10 0 10 20 ];?
y1 = [X(1,1) X(1,2) X(1,3) X(1,4) X(1,5)];
[p,S]=polyfit(x1,y1,2);?
Y=polyconf(p,x1,y1);?
plot(x1,y1,'y');
hold on;
2.Roberts函數

Roberts函數與能量梯度函數相似,它是利用對角方向像素點灰度值之差。將4個相鄰像素點的灰度值交叉相減的平方和作為每個像素點的梯度值,對所有像素梯度值累加作為清晰度評價函數值,表達式如下式所示:

%Roberts
?N1 = 5;?
?A = zeros(1,N1);?
?X = zeros(1,N1);
?tic
?for L=1: N1?
?I=imread([int2str(L),'.jpg']);?
?I=double(I);?
?[M N]=size(I);?
?FI=0;?
?%Robert算子原理,對角方向相鄰的兩像素之差?
?for x=1:M-1?
? ? ?for y=1:N-1?
? ? ? ? ?FI= FI + (abs(I(x,y)-I(x+1,y+1))+abs(I(x+1,y)-I(x,y+1)));?
? ? ?end?
?end?
?A(1,L) = FI; ?
?end?
?time=toc
?
? for W = 1:N1?
? ? ?C = max(A);?
? ? ?D = min(A);?
? ? ?E = C-D;?
? ? ?R = (A(1,W) - D)/(E);?
? ? ?X(1,W) = R;?
?end?
?
x1=[-20 -10 0 10 20 ];?
y1 = [X(1,1) X(1,2) X(1,3) X(1,4) X(1,5)];
[p,S]=polyfit(x1,y1,2);?
Y=polyconf(p,x1,y1);?
plot(x1,y1,'c');?
hold on;
3.Tenengrad函數

采用Sobel算子提取像素點水平方向和垂直方向的梯度值,Tenengrad函數定義為像素點梯度的平方和,并為梯度設置一個閾值T調節函數的靈敏度。表達式如下式所示:

代碼:

%Tenengrad
?N1 =5;?
?A = zeros(1,N1);?
?X = zeros(1,N1);?
?tic
?for L=1: N1?
?I=imread([int2str(L),'.jpg']);?
?I=double(I);?
?[M N]=size(I);?
?%利用sobel算子gx,gy與圖像做卷積,提取圖像水平方向和垂直方向的梯度值
GX = 0; ? %圖像水平方向梯度值
GY = 0; ? %圖像垂直方向梯度值
FI = 0; ? %變量,暫時存儲圖像清晰度值
T ?= 0; ? %設置的閾值
?for x=2:M-1?
? ? ?for y=2:N-1?
? ? ? ? ?GX = I(x-1,y+1)+2*I(x,y+1)+I(x+1,y+1)-I(x-1,y-1)-2*I(x,y-1)-I(x+1,y-1);?
? ? ? ? ?GY = I(x+1,y-1)+2*I(x+1,y)+I(x+1,y+1)-I(x-1,y-1)-2*I(x-1,y)-I(x-1,y+1);?
? ? ? ? ?SXY= sqrt(GX*GX+GY*GY); %某一點的梯度值
? ? ? ? ?%某一像素點梯度值大于設定的閾值,將該像素點考慮,消除噪聲影響
? ? ? ? ?if SXY>T?
? ? ? ? ? ?FI = FI + SXY*SXY; ? ?%Tenengrad值定義
? ? ? ? ?end?
? ? ?end?
?end?
?A(1,L) = FI;?
?end?
?time=toc
?
% X = zeros(1,N1);?
?for W = 1:N1?
? ? ?C = max(A);?
? ? ?D = min(A);?
? ? ?E = C-D;?
? ? ?R = (A(1,W) - D)/(E);?
? ? ?X(1,W) = R;?
?end?
x1=[-20 -10 0 10 20 ];?
y1 = [X(1,1) X(1,2) X(1,3) X(1,4) X(1,5)];
[p,S]=polyfit(x1,y1,2);?
Y=polyconf(p,x1,y1);?
plot(x1,y1,'g');?
hold on;
?

4.Brenner函數

又稱梯度濾波器法,只需計算x方向上相差兩個像素點的差分,即計算二階梯度,計算量少,表達式如下所示:

代碼:

%Brenner
?N1 = 5; ? ? ? ? ? %N1為要處理的圖片張數
?A = zeros(1,N1); ? %zeros()定義指定行列的零矩陣;A矩陣用來存儲每一幅圖像的清晰度原值
?X = zeros(1,N1); ? %X用來存儲做歸一化處理后的函數值
?%------------------------------
?tic
?for L=1: N1 ? ? ? ?
?I=imread([int2str(L),'.jpg']); %讀取圖片,將值轉換為字符串接受向量和矩陣輸入
I=double(I); ? ? ? ? %精度存儲問題
?[M N]=size(I); ? ? %M等于矩陣行數,N等于矩陣列數;size()獲取矩陣行列
?FI=0; ? ? ? ?%變量,暫時存儲每一幅圖像的Brenner值
?for x=1:M-2 ? ? ?%Brenner函數原理,計算相差兩個位置的像素點的灰度值
? ? ?for y=1:N?
? ? ? ? ?FI=FI+(I(x+2,y)-I(x,y))*(I(x+2,y)-I(x,y));?
? ? ?end?
?end?
?A(1,L) = FI;?
?end
?time=toc
?%對原始數據做歸一化處理,線性函數歸一化公式
? for W = 1:N1?
? ? ?C = max(A);?
? ? ?D = min(A);?
? ? ?E = C-D;?
? ? ?R = (A(1,W) - D)/(E);?
? ? ?X(1,W) = R;?
? end?
%曲線擬合
x1=[-20 -10 0 10 20 ];?
y1 = [X(1,1) X(1,2) X(1,3) X(1,4) X(1,5)];?
[p,S]=polyfit(x1,y1,2); ? %polyfit(x,y,n)曲線擬合函數,已知離散點坐標擬合曲線;x,y橫縱坐標,n為擬合階數,一階直線擬合,二階拋物線擬合 ,返回冪次從高到低的多項式系數向量P,矩陣S用于生成預測值的誤差估計
Y=polyconf(p,x1,y1); %置信區間
plot(x1,y1,'r'); ? ? %畫出擬合曲線,紅線red
title('梯度評價函數');
xlabel('成像面位置');
ylabel('歸一化后的圖像清晰度評價值');
hold on;
5.Variance方差函數

Variance函數表示圖像灰度分布的離散程度。離焦圖像灰度值變換范圍小,離散程度低,方差小;正焦圖像灰度值變換范圍大,離散程度高,方差大。因此可以用其作為評價函數,對于M*N大小的圖像表達式如下式所示:

?代碼:

%Variance
?N1 = 5;?
?A = zeros(1,N1);?
?X = zeros(1,N1);?
tic
?for L=1: N1
?I=imread([int2str(L),'.jpg']); ?
?I=double(I);?
?[M N]=size(I); ?
?gama = 0; ? %gama圖像平均灰度值
?%求gama
?for x=1:M?
? ? ?for y=1:N?
? ? ? ? ?gama = gama + I(x,y);?
? ? ?end?
?end?
?gama = gama/(M*N);?
??
?FI=0;?
?for x=1:M?
? ? ?for y=1:N?
? ? ? ? ?FI=FI+(I(x,y)-gama)*(I(x,y)-gama);?
? ? ?end?
?end?
? A(1,L) = FI;
?end?
?time=toc
?for W = 1:N1?
? ? ?C = max(A);?
? ? ?D = min(A);?
? ? ?E = C-D;?
? ? ?R = (A(1,W) - D)/(E);?
? ? ?X(1,W) = R;?
?end?
??
x1=[-20 -10 0 10 20 ];?
y1 = [X(1,1) X(1,2) X(1,3) X(1,4) X(1,5)];
?[p,S]=polyfit(x1,y1,2);?
?Y=polyconf(p,x1,y1);?
?plot(x1,y1,'b');
?hold on;
6.?Laplace拉普拉斯函數

采用Laplace算子與圖像各個像素點的灰度值進行卷積得到一個梯度矩陣記為,取各像素點梯度的平方和作為評價函數,如下式所示:

代碼:

%Laplace?
?N1 = 5;?
?A = zeros(1,N1);?
?X = zeros(1,N1);
?tic
?for L=1: N1?
?I=imread([int2str(L),'.jpg']);?
?I=double(I);?
?[M N]=size(I);?
?FI=0;?
?for x=2:M-1?
? ? ?for y=2:N-1?
? ? ? ? ?IXXIYY = -4*I(x,y)+I(x,y+1)+I(x,y-1)+I(x+1,y)+I(x-1,y);?
? ? ? ? ? ? ?FI=FI+IXXIYY*IXXIYY; ? ? ? ?%取各像素點梯度的平方和作為清晰度值 ? ?
? ? ?end?
?end ?
A(1,L) = FI;?
?end?
?time=toc
?
?for W = 1:N1?
? ? ?C = max(A);?
? ? ?D = min(A);?
? ? ?E = C-D;?
? ? ?R = (A(1,W) - D)/(E);?
? ? ?X(1,W) = R;?
?end?
?
x1=[-20 -10 0 10 20 ];?
y1 = [X(1,1) X(1,2) X(1,3) X(1,4) X(1,5)];
[p,S]=polyfit(x1,y1,2);?
Y=polyconf(p,x1,y1);?
plot(x1,y1,'m');?
hold off;
二:頻域評價函數

1.基于二維離散傅里葉變換的圖像清晰度評價函數

?其中,加權系數表示像素到中心像素的距離,其作用為強調頻譜中的高頻成分。因為圖像經過傅里葉變換和移位后,頻率分布為從中央到四周邊緣從低頻向高頻擴散;M,N?為圖像尺寸;P(u,v)表示圖像的頻譜的平方。

代碼:

%DFT
N1 = 5; ? ? ?%N1要處理的圖像張數 ? ? ? ?
A = zeros(1,N1); ?%A向量用來存儲每一幅圖像的清晰度原值
X = zeros(1,N1); ?%X用來存儲做歸一化處理后的清晰度函數值
%----------------------
tic
for L=1: N1 ? ? ? ?
I=imread([int2str(L),'.jpg']);?
I=rgb2gray(I);
I=double(I); ? ? ? ?
[M N]=size(I); ? ? ? ? ?
fftI = fft2(I); ? %進行二維離散傅里葉變換
sfftI = fftshift(fftI); ? %移位,直流分量移到圖像中心
magnitude = abs(sfftI); ? ? ?%取模值
FI=0;?
for u=1:M
? ? for v=1:N
? ? ? ? FI=FI+sqrt(u*u+v*v)*magnitude(u,v); ? ? ?%基于離散傅里葉變換的清晰度評價函數
? ? end
end
A(1,L) = FI/(M*N);
end
time=toc
%對原始數據做歸一化處理,線性函數歸一化公式
%-------------------------
? for W = 1:N1?
? ? ?C = max(A);?
? ? ?D = min(A);?
? ? ?E = C-D;?
? ? ?R = (A(1,W) - D)/(E);?
? ? ?X(1,W) = R;?
? end?
%曲線擬合,0為正焦位置,離焦-正焦-離焦
x1=[-20 -10 0 10 20 ];?
y1 = [X(1,1) X(1,2) X(1,3) X(1,4) X(1,5)];
[p,S]=polyfit(x1,y1,2); ? %polyfit(x,y,n)曲線擬合函數,已知離散點坐標擬合曲線;x,y橫縱坐標,n為擬合階數,一階直線擬合,二階拋物線擬合 ,返回冪次從高到低的多項式系數向量P,矩陣S用于生成預測值的誤差估計
Y=polyconf(p,x1,y1); %置信區間
plot(x1,y1,'b'); ? ? %畫出擬合曲線,紅線red
title('頻域評價函數');
xlabel('成像面位置');
ylabel('歸一化后的圖像清晰度評價值');
hold on;
?
2.離散余弦變換DCT

基于DFT的評價函數靈敏度高,但傅里葉變換系數是復數,計算量大。離散余弦變換DCT對此進行改進,變換系數是實數,計算量減少且同樣可以表示圖像頻率分布信息。對于一幅M*N的圖像,基于離散余弦變換DCT變換的清晰度評價函數定義如下:

%DCT
N1 = 5; ? ? ?%N1要處理的圖像張數 ? ? ? ?
A = zeros(1,N1); ?%A向量用來存儲每一幅圖像的清晰度原值
X = zeros(1,N1); ?%X用來存儲做歸一化處理后的清晰度函數值
%----------------------
tic
for L=1: N1 ? ? ? ?
I=imread([int2str(L),'.jpg']);?
I=rgb2gray(I);
I=double(I)+10*randn(size(I)); ? ? ? ?
[M N]=size(I); ? ? ? ? ?
dctI = dct2(I); ? %進行二維離散傅里葉變換
magnitude = abs(dctI); ? ? ?%取模值
FI=0;?
for u=1:M
? ? for v=1:N
? ? ? ? FI=FI+(u+v)*magnitude(u,v); ? ? ?%基于離散傅里葉變換的清晰度評價函數
? ? end
end
A(1,L) = FI/(M*N);
end
time=toc
%對原始數據做歸一化處理,線性函數歸一化公式
%-------------------------
? for W = 1:N1?
? ? ?C = max(A);?
? ? ?D = min(A);?
? ? ?E = C-D;?
? ? ?R = (A(1,W) - D)/(E);?
? ? ?X(1,W) = R;?
? end?
%曲線擬合,0為正焦位置,離焦-正焦-離焦
x1=[-20 -10 0 10 20 ];?
y1 = [X(1,1) X(1,2) X(1,3) X(1,4) X(1,5)];?
[p,S]=polyfit(x1,y1,2); ? %polyfit(x,y,n)曲線擬合函數,已知離散點坐標擬合曲線;x,y橫縱坐標,n為擬合階數,一階直線擬合,二階拋物線擬合 ,返回冪次從高到低的多項式系數向量P,矩陣S用于生成預測值的誤差估計
Y=polyconf(p,x1,y1); %置信區間
plot(x1,y1,'r'); ? ? %畫出擬合曲線,紅線red
hold off;
三、基于信息熵的清晰度評價函數

在信息論中,熵用來描述信息的豐富程度。信息熵評價函數基于正焦圖像中具有多樣性的灰度分布,像素灰度值分布區間廣,灰度值之間差異大,此時熵值大;離焦圖像正好相反。因此可以基于信息熵構造清晰度評價函數,定義如下:

代碼:?

%entropy
N1 = 5; ? ? ? ? ? %N1為要處理的圖片張數
A = zeros(1,N1); ? %zeros()定義指定行列的零矩陣;A矩陣用來存儲每一幅圖像的清晰度原值
X = zeros(1,N1); ? %X用來存儲做歸一化處理后的函數值
%處理圖片
tic
for L=1: N1 ? ? ? ?
?I=imread([int2str(L),'.jpg']); %讀取圖片,將值轉換為字符串接受向量和矩陣輸入
?I=rgb2gray(I);
?I=double(I);?
?A(1,L)=entr(I); ? ?%調用求熵值函數
end
time=toc
%對原始數據做歸一化處理,線性函數歸一化公式
?for W = 1:N1?
? ?C = max(A);?
? ?D = min(A);?
? ?E = C-D;?
? ?R = (A(1,W) - D)/(E);?
? ?X(1,W) = R;?
? end?
x1=[-20 -10 0 10 20 ];?
y1 = [X(1,1) X(1,2) X(1,3) X(1,4) X(1,5)];?
[p,S]=polyfit(x1,y1,2); ? %polyfit(x,y,n)曲線擬合函數,已知離散點坐標擬合曲線;x,y橫縱坐標,n為擬合階數,一階直線擬合,二階拋物線擬合 ,返回冪次從高到低的多項式系數向量P,矩陣S用于生成預測值的誤差估計
Y=polyconf(p,x1,y1); %置信區間
plot(x1,y1,'r'); ? ? %畫出擬合曲線,紅線red
title('基于信息熵的評價函數');
xlabel('成像面位置');
ylabel('歸一化后的圖像清晰度評價值');
?
?
%定義子函數entr(),求一幅圖像的熵值
%-------------------------------------------
function[H_img]= entr(I) ??
[C,R]=size(I); %求圖像的規格
Img_size=C*R; %圖像像素點的總個數
L=256; %圖像的灰度級0-255
H_img=0; ?%圖象熵
nk=zeros(L,1); %存儲圖像灰度出現次數
for i=1:C
for j=1:R
Img_level=I(i,j)+1; %獲取圖像的灰度級
nk(Img_level)=nk(Img_level)+1; %統計每個灰度級像素的點數
end
end
for k=1:L
Ps(k)=nk(k)/Img_size; %計算每一個灰度級像素點所占的概率
if Ps(k)~=0 %去掉概率為0的像素點
H_img=-Ps(k)*log2(Ps(k))+H_img; %求熵值的公式
end
end
end
?
四、基于統計學的清晰度評價函數

1.Range函數

Range函數基于灰度直方圖中灰度帶的變化大小反映清晰度,定義如下所示:

?代碼:

%Range
N1 =5;?
gray_level = 32; %灰度直方圖中劃分的灰度等級
temp=zeros(1,gray_level);
A = zeros(1,N1); ?
X = zeros(1,N1);
tic
for L=1: N1 ? ? ? ?
?I=imread([int2str(L),'.jpg']); %讀取圖片,將值轉換為字符串接受向量和矩陣輸入
?I=rgb2gray(I);?
?I=double(I); ? %-------沒做數值類型,出錯,曲線相反----------
?[count,K] = imhist(I,gray_level);%imhist()畫灰度分布直方圖,count表示某一灰度區間的像素個數,K表示灰度區間取值
?for y=1:gray_level?
? temp(1,y)=count(y)*K(y);
?end
?A(1,L)=max(temp)-min(temp);
end
time=toc
for W = 1:N1?
? ? ?C = max(A);?
? ? ?D = min(A);?
? ? ?E = C-D;?
? ? ?R = (A(1,W) - D)/(E);?
? ? ?X(1,W) = R;?
end?
x1=[-20 -10 0 10 20 ];?
y1 = [X(1,1) X(1,2) X(1,3) X(1,4) X(1,5)];
[p,S]=polyfit(x1,y1,2); ? %polyfit(x,y,n)曲線擬合函數,已知離散點坐標擬合曲線;x,y橫縱坐標,n為擬合階數,一階直線擬合,二階拋物線擬合 ,返回冪次從高到低的多項式系數向量P,矩陣S用于生成預測值的誤差估計
Y=polyconf(p,x1,y1); %置信區間
plot(x1,y1,'g'); ? ? %畫出擬合曲線,紅線red
title('統計學評價函數');
xlabel('成像面位置');
ylabel('歸一化后的圖像清晰度評價值');
hold on
2?Vollaths函數

Vollaths函數又稱自相關函數,反映空間兩點的相似性。正焦圖像邊緣清晰銳利,像素點之間相關程度低;離焦圖像像素點相關程度高。清晰度評價函數如下所示:

?.代碼:

%vollaths
?N1 = 5; ? ? ? ? ? %N1為要處理的圖片張數
?A = zeros(1,N1); ? %zeros()定義指定行列的零矩陣;A矩陣用來存儲每一幅圖像的清晰度原值
?X = zeros(1,N1); ? %X用來存儲做歸一化處理后的函數值
?%用一個for循環處理每一張圖片
?tic
?for L=1: N1 ? ? ? ?
?I=imread([int2str(L),'.jpg']); %讀取圖片,將值轉換為字符串接受向量和矩陣輸入
?I=double(I); ? ? ? ?%精度存儲問題
?[M N]=size(I); ? ? %M等于矩陣行數,N等于矩陣列數;size()獲取矩陣行列數
?%begintime=clock;?
??
?FI=0; ? ? ? ?%變量,暫時存儲每一幅圖像的Brenner值
?for x=1:M-2 ? ? ?%Brenner函數原理,計算相差兩個位置的像素點的灰度值
? ? ?for y=1:N?
? ? ? ? ?FI=FI+I(x,y)*abs(I(x+1,y)-I(x+2,y));?
? ? ?end?
?end?
?%time=etime(clock,begintime);?
?A(1,L) = FI;?
?end?
?time=toc
?%對原始數據做歸一化處理,線性函數歸一化公式
? for W = 1:N1?
? ? ?C = max(A);?
? ? ?D = min(A);?
? ? ?E = C-D;?
? ? ?R = (A(1,W) - D)/(E);?
? ? ?X(1,W) = R;?
? end?
?
x1=[-20 -10 0 10 20 ];?
y1 = [X(1,1) X(1,2) X(1,3) X(1,4) X(1,5)];
[p,S]=polyfit(x1,y1,2); ? %polyfit(x,y,n)曲線擬合函數,已知離散點坐標擬合曲線;x,y橫縱坐標,n為擬合階數,一階直線擬合,二階拋物線擬合 ,返回冪次從高到低的多項式系數向量P,矩陣S用于生成預測值的誤差估計
Y=polyconf(p,x1,y1); %置信區間
plot(x1,y1,'r'); ? ? %畫出擬合曲線,紅線red
hold off
以下是博主的仿真結果:

梯度

頻域

信息熵

統計學

?初次接觸這方面的內容,不足之處,請諒解。

總結

以上是生活随笔為你收集整理的11种图像清晰度评价函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。