數字影象處理實驗報告
實驗名稱:直方圖規定化
姓名:班級:
學號:專業:電子資訊工程(2+2)
指導教師:陳華華
實驗日期:2023年5月24日
直方圖匹配(規定化)
直方圖均衡化能夠自動增強整個影象的對比度,但它的具體增強效果不容易控制,處理的結果總是得到全域性均勻化的直方圖。實際上有時需要變換直方圖,使之成為某個特定的形狀,從而有選擇地增強某個灰度值範圍內的對比度。 這時可以採用比較靈活的直方圖規定化。
一般來說正確地選擇規定化的函式可以獲得比直方圖均衡化更好的效果。
所謂直方圖規定化,就是通過乙個灰度映像函式,將原灰度直方圖改造成所希望的直方圖。所以,直方圖修正的關鍵就是灰度映像函式。
直方圖匹配方法主要有3個步驟(這裡設m和n分別為原始圖和規定圖中的灰度級數,且只考慮 n≤m的情況):
(1) 如同均衡化方法中,對原始圖的直方圖進行灰度均衡化:
(2) 規定需要的直方圖,並計算能使規定的直方圖均衡化的變換:
(3) 將第1個步驟得到的變換反轉過來,即將原始直方圖對應對映到規定的直方圖,也就是將所有pf(fi)對應到pu(uj)去。
一、a圖直方圖規定b圖
matlab程式:
%直方圖規定化
clear all
a=imread('c:\users\hp\desktop\a.tif讀入a影象
imshow(a顯示出來
title('輸入的a影象')
%繪製直方圖
[m,n]=size(a測量影象尺寸
b=zeros(1,256預建立存放灰度出現概率的向量
for k=0:255
b(k+1)=length(find(a==k))/(m*n); %計算每級灰度出現的概率,將其存入b中相應位置
endfigure,bar(0:255,b,'g繪製直方圖
title('a影象直方圖')
xlabel('灰度值')
ylabel('出現概率')
axis([0,260,0,0.015])
c=imread('c:\users\hp\desktop\b.tif');%讀入b影象
imshow(c顯示出來
title('輸入的b影象')
%繪製直方圖
[m,n]=size(c測量影象尺寸
d=zeros(1,256預建立存放灰度出現概率的向量
for k=0:255
d(k+1)=length(find(c==k))/(m*n); %計算每級灰度出現的概率,將其存入d中相應位置
endfigure,bar(0:255,d,'g繪製直方圖
title('b影象直方圖')
xlabel('灰度值')
ylabel('出現概率')
axis([0,260,0,0.015])
s1=zeros(1,256);
for i=1:256
for j=1:i
s1(i)=d(j)+s1(i計算b灰度圖累計直方圖
endend counts=b
figure,bar(0:255,counts,'r')
title('a影象直方圖 ')
s2=zeros(1,256);
for i=1:256
for j=1:i
s2(i)=counts(j)+s2(i
endend累計"規定化直方圖
%對比直方圖,找到相差最小的灰度級
for i=1:256
for j=1:255
if s1(j)<=s2(i)&s1(j+1)>=s2(i)
if abs(s1(j)-s2(i))<=abs(s1(j+1)-s2(i)) t(i)=j;
else t(i)=j+1;
endendendend%確定變換關係,重組直方圖
h=zeros(1,256);
h(1)=s2(1);
for i=2:255
if t(i-1)>0
for k=(t(i-1)+1):t(i)
h(i)=h(i)+d(k);
end else h(i)=0;
endendfigure,bar(0:255,h,'g顯示規定化後的直方圖
title('a規定b後的直方圖')
xlabel('灰度值')
ylabel('出現概率')
axis([0,260,0,0.6])
%顯示規定圖
pa=c將各個畫素歸一化後的灰度值賦給這個畫素
for i=1:m
for j=1:n
for k=2:255
if t(k-1)<=c(i,j)&c(i,j)<=t(k)
pa(i,j)=k;
break;
end end
endendfigure,imshow(pa顯示規定化後的影象
title('a規定b後影象')
imwrite(pa,'guidinghua.bmp');
二、用已知直方圖規定a圖
規定灰度為
[zeros(1,49),0.3,zeros(1,49),0.1,zeros(1,49),0.
2,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.
1]matlab程式:
clear all
a=imread('c:\users\hp\desktop\b.tif讀入a影象
imshow(a顯示出來
title('輸入的a影象')
%繪製直方圖
[m,n]=size(a測量影象尺寸
b=zeros(1,256預建立存放灰度出現概率的向量
for k=0:255
b(k+1)=length(find(a==k))/(m*n); %計算每級灰度出現的概率,將其存入b中相應位置
endfigure,bar(0:255,b,'g繪製直方圖
title('a影象直方圖')
xlabel('灰度值')
ylabel('出現概率')
axis([0,260,0,0.015])
s1=zeros(1,256);
for i=1:256
for j=1:i
s1(i)=b(j)+s1(i計算原灰度圖累計直方圖
endend counts=[zeros(1,49),0.3,zeros(1,49),0.1,zeros(1,49),0.
2,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.
1];%規定化直方圖
figure,bar(1:300,counts,'r')
title('規定化直方圖')
s2=zeros(1,256);
for i=1:256
for j=1:i
s2(i)=counts(j)+s2(i
endend累計"規定化直方圖
%對比直方圖,找到相差最小的灰度級
for i=1:256
for j=1:256
if s1(j)<=s2(i)&s1(j+1)>=s2(i)
if abs(s1(j)-s2(i))<=abs(s1(j+1)-s2(i)) t(i)=j;
else t(i)=j+1;
endendendend%確定變換關係,重組直方圖
h=zeros(1,256);
h(1)=s2(1);
for i=2:256
if t(i-1)>0
for k=(t(i-1)+1):t(i)
h(i)=h(i)+b(k);
end else h(i)=0;
endendfigure,bar(0:255,h,'g顯示規定化後的直方圖
title('規定化後的直方圖')
xlabel('灰度值')
ylabel('出現概率')
axis([0,260,0,0.6])
%顯示規定圖
pa=a將各個畫素歸一化後的灰度值賦給這個畫素
for i=1:m
for j=1:n
數字影象處理直方圖均衡實驗報告
數字影象處理實 驗報告實驗名稱 直方圖均衡 一 實驗名稱 直方圖均衡 二 實驗目的 掌握直方圖均衡化的原理。掌握直方圖均衡化實現影象增強的實現方法。三 實驗原理 1 直方圖均衡化處理技術是用累積分布函式作變換函式的直方圖修正方法 2 用累積分布函式作為變換函式可產生一幅灰度級分布具有均勻概率密度的影...
實驗二數字影象的直方圖規定化處理
一 實驗目的 一 掌握數字影象的直方圖規定化處理的演算法和方法。二 熟悉數字影象的直方圖規定化處理的演算法原理。二 實驗原理和方法 直方圖規定化是用於產生處理後有特殊直方圖的影象方法。令和分別為原始影象和期望影象的灰度概率密度函式。對原始影象和期望影象均作直方圖均衡化處理,應有 由於都是作直方圖均衡...
數字影象處理實驗報告
本次實驗的實驗目的及主要內容是濾波反投影重建,實驗目的包括以下幾點 了解影象投影的原理 認識radon變換 了解反投影重建影象的原理 認識逆radon變換 了解實現逆radon變換的方法。1.圖象投影原理 投影變換 projection transformation 是將一種地圖投影點的座標變換為另...