91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 9KB
    文件類型: .m
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-18
  • 語言: Matlab
  • 標簽: matlab??

資源簡介

利用matlab,對指紋圖片進行預處理,包括縮放處理,歸一化,區分出前景色和背景色,沿脊線方向增強指紋紋路,去除指紋中的空洞和毛刺,圖像細化,可直接編譯使用

資源截圖

代碼片段和文件信息


f=imread(‘C:\Users\lin\Desktop\t.png‘);%讀取圖像到內存
f=imresize(f[363312]);%該函數用于對圖像做縮放處理。
figure;imshow(f);
%用rgb2gray?將彩色圖像轉換為灰度圖像。matlab讀入圖像的數據是uint8,而matlab中數值一般采用double型(64位)存儲和運算。
%所以要先將圖像轉為double格式的才能運算
gray=double(rgb2gray(f));
%轉成uint8?imshow()顯示圖像時對double型是認為在0~1范圍內即大于1時都是顯示為白色,而imshow顯示uint8型時是0~255范圍。
%所以對double類型的圖像顯示的時候,要么歸一化到0~1之間,要么將double類型的0~255數據轉為uint8類型。
figure;imshow(uint8(gray));

%歸一化,灰度值限制在某一范圍
M=0;var=0;
%均值
m=size(gray1);n=size(gray2);
for?x=1:m
????for?y=1:n
????????M=M+gray(xy);
????end
end
M1=M/(m*n);%M1為均值?所有像素總共和除以多少個像素
%方差
for?x=1:m
????for?y=1:n
????????var=var+(gray(xy)-M1).^2;
????end;
end;
var1=var/(m*n);%計算方差最終的大小?var1
%歸一化?********************************
for?x=1:m
????for?y=1:n
????????if?gray(xy)>M1
????????????gray(xy)=150+sqrt(2000*(gray(xy)-M1)/var1);
????????else
????????????gray(xy)=150-sqrt(2000*(M1-gray(xy))/var1);
????????end
????end
end
figure;imshow(uint8(gray));

%*************************************************************************************************************
%歸一化處理完畢后會對圖像進行分割處理,目的是區分出前景色和背景色。我采用的分割為根據多區域閾值分割。
%多區域分割的效果取決于區域的大小,而指紋的區域分為一脊一谷最好,所以我選擇3x3的區域大小。我會根據對區域多次進行求均值和方差進行分割。
%分割?分成多個3*3的塊大小?
M=3;
H=floor(m/M);L=floor(n/M);
aveg1=zeros(HL);
var1=zeros(HL);
%計算每一塊的平均值
for?x=1:H
????for?y=1:L
????????aveg=0;var=0;
????????%每一塊的均值
????????for?i=1:M
????????????for?j=1:M
????????????????aveg=gray(i+(x-1)*Mj+(y-1)*M)+aveg;
????????????end;
????????end;
????????aveg1(xy)=aveg/(M*M);
????????%每一塊的方差值
????????for?i=1:M
????????????for?j=1:M
????????????????var=(gray(i+(x-1)*Mj+(y-1)*M)-aveg1(xy)).^2+var;
????????????end;
????????end;
????????var1(xy)=var/(M*M);
????end;
end;
%所有塊的平均值和方差
Gmean=0;Vmean=0;
for?x=1:H
????for?y=1:L
????????Gmean=Gmean+aveg1(xy);
????????Vmean=Vmean+var1(xy);
????end
end
Gmean1=Gmean/(H*L);
Vmean1=Vmean/(H*L);

%每一小塊和整塊相比,再次求均值方差
%?前景(黑色)
gtemp=0;gtotle=0;vtotle=0;vtemp=0;
for?x=1:H
????for?y=1:L
????????if?Gmean1>aveg1(xy)%如果當前快的均值小于全局均值?就認為是前景?
????????????gtemp=gtemp+1;
????????????gtotle=gtotle+aveg1(xy);
????????end
????????if?Vmean1????????????vtemp=vtemp+1;
????????????vtotle=vtotle+var1(xy);
????????end
????end
end
%?前景均值
G1=gtotle/gtemp;
%?前景方差
V1=vtotle/vtemp;

%再次與剛剛產生的值相比
%?求得背景(白色)均值方差?增加可靠性
gtemp1=0;gtotle1=0;vtotle1=0;vtemp1=0;
for?x=1:H
????for?y=1:L
????????if?G1????????????gtemp1=gtemp1+1;
????????????gtotle1=gtotle1+aveg1(xy);
????????end
????????if?0????????????vtemp1=vtemp1+1;
????????????vtotle1=vtotle1+var1(xy);
????????end
????end
end
%?背景均值
G2=gtotle1/gtemp1;
%?背景方差
V2=vtotle1/vtemp1;
%我會根據對區域多次進行求均值和方差進行分割。采集到的指紋圖背景的灰度值大于前景色,背景主要為低頻,所以背景的方差小于前景的方差。
%我分別求得背景和前景的均值和方差然后會得到背景為白色?脊線為黑色。
%然后保存在矩陣e(二值圖)中,我會根據e中位置等于1的點的八鄰域點的和小于四得到背景色,達到背景和前景分離(e矩陣)。
%****************************************
%構建矩陣(H*L

評論

共有 條評論