基於MATLAB的指紋識別演算法模擬實現
clc;
clear all;
close all;
warning off;
% 讀取圖片
% 注意,為了和論文中的結果對應起來,我們使用論文中的圖片進行程式碼的測試
I=imread('images.jpg');
if isrgb(I) == 1
I = rgb2gray(I);
else
I = I;
end
I_tmp = I;
figure;
subplot(121);
imshow(I);
% 影像預處理,去噪濾波
I = medfilt2(I,[3,3]);% 進行中值濾波 ;
subplot(122);
imshow(I);
% 背景分割
% 影像二值化處理
% 首先進行歸一化
I=norms(I,120,600);
figure;
% 為了顯示處理效果,需要資料型別轉換
subplot(121);
imshow(double(I));
Ker = 8;
[m,n] = size(I);
m1 = m/Ker;
n1 = n/Ker;
for i=1:m1
for j=1:n1
% 設定門限
t=mean2(I((i-1)*Ker+1:(i-1)*Ker+Ker,(j-1)*Ker+1:(j-1)*Ker+Ker));
for k=(i-1)*Ker+1:(i-1)*Ker+Ker
for l=(j-1)*Ker+1:(j-1)*Ker+Ker
if I(k,l) < t
I(k,l)=1;
else
I(k,l)=0;
end
end
end
end
end
% 為了顯示處理效果,需要資料型別轉換
subplot(122);
imshow(double(I));
% 異常點的處理
for i=1:m
for j=1:n
if I(i,j)>1
I(i,j)=0;
end
end
end
for i=1:m
for j=1:n
if I(i,j)==1
for k=1:j
I(i,k)=1;
end
break;
end
end
end
for i=1:m
for j=n:-1:1
if I(i,j)==1
for k=n:-1:j
I(i,k)=1;
end
break;
end
end
end
for i=1:m
for j=1:n
if I(i,j)==1
I(i,j)=0;
else
I(i,j)=1;
end
end
end
figure;
% 為了顯示處理效果,需要資料型別轉換
imshow(double(I));
% 對細化前的影像進行維納濾波
figure;
subplot(121);
imshow(double(I));
I=wiener2(I,[3 3]);
subplot(122);
imshow(double(I));
% 以下為細化處理
[r,c] = size(I);
for i1=1:r;
for j1=1:c
if (I(i1,j1)==1)
I(i1,j1)= 255;
I2 = I;
end
end
end
y = thinning(I2);
figure;
imshow(y);
% 以上的程式碼是你之前的第三章的程式碼的模擬圖
% 以下的程式碼是對應第四章的模擬圖
% 首先需要提取指紋影像的中心點——對應論文的“圖 4-1 提取中心點後的細化影像”
[XC,YC] =外匯跟單gendan5.com find_central_point(y);
% 找尋細化影像的特徵點
% 特徵點的建立——對應論文的“圖 4 - 2 特徵點提取後的影像”
[dpx3,dpy3,dpcount3,fpx3,fpy3,fpcount3]=characterpoint(y);
figure;
imshow(y);
hold on;
plot(dpy3,dpx3,'o');
hold on;
plot(fpy3,fpx3,'+');
hold on;
plot(XC,YC,'*r');
hold off;
% 以下程式碼是對最後的識別結果和資料庫中的進行匹配
% 計算每個特徵點到中心點的距離,
Dpcount=size(dpx3,2);
Fpcount=size(fpx3,2);
for i=1:Dpcount
DP_Feature(i)=sqrt((dpx3(i)-YC)^2+(dpy3(i)-XC)^2);
end
for j=1:Fpcount
FP_Feature(j)=sqrt((fpx3(j)-YC)^2+(fpy3(j)-XC)^2);
end
% 計算指紋影像的方向角
theta = func_theta(I_tmp);
% 建立待識別的特徵庫
for i=1:Dpcount
PointOfModel(i,1)=1;
PointOfModel(i,2)=DP_Feature(i);
PointOfModel(i,3)=theta(dpx3(i),dpy3(i))-theta(YC,XC);
end
for i=Dpcount+1:Dpcount+Fpcount
PointOfModel(i,1)=2;
PointOfModel(i,2)=FP_Feature(i-Dpcount);
PointOfModel(i,3)=theta(fpx3(i-Dpcount),fpy3(i-Dpcount))-theta(YC,XC);
end
% 呼叫 database_feature 計算得到 PointOfMatch
I=imread('database/22.tif');
if isrgb(I) == 1
I = rgb2gray(I);
else
I = I;
end
PointOfMatch = database_feature(I);
% 呼叫 MATCH 函式進行匹配
% 圖 4-3 匹配後的影像
NUM = 90;% 這個引數是新加的,設定相似度,即多少個匹配點對上才算成功
Count=match(y,PointOfModel,PointOfMatch,dpx3,dpy3,fpx3,fpy3,NUM);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2925232/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於深度學習網路的寶石型別識別演算法matlab模擬深度學習型別演算法Matlab
- 基於粒子群最佳化演算法的圖象聚類識別matlab模擬演算法聚類Matlab
- android 簡單實現指紋識別功能Android
- C++ LibCurl實現Web指紋識別C++Web
- 基於CNN卷積神經網路的MQAM調製識別matlab模擬CNN卷積神經網路MQMatlab
- 基於GSP工具箱的NILM演算法matlab模擬演算法Matlab
- 基於免疫演算法的TSP問題求解matlab模擬演算法Matlab
- 基於MATLAB公式識別Matlab公式
- Android 指紋識別,指紋支付demoAndroid
- CMS指紋識別
- 基於harris角點和RANSAC演算法的影像拼接matlab模擬演算法Matlab
- 基於WSN網路的定向步幻影路由演算法matlab模擬路由演算法Matlab
- 基於貝葉斯最佳化CNN-LSTM網路的資料分類識別演算法matlab模擬CNN演算法Matlab
- m基於深度學習網路的手勢識別系統matlab模擬,包含GUI介面深度學習MatlabGUI
- 基於禁忌搜尋演算法的TSP路徑規劃matlab模擬演算法Matlab
- 基於SFLA演算法的神經網路最佳化matlab模擬演算法神經網路Matlab
- 生物特徵識別之指紋識別,偽造,指紋裝置缺陷設計特徵
- m基於深度學習網路的瓜果種類識別系統matlab模擬,帶GUI介面深度學習MatlabGUI
- m基於Googlenet深度學習的運動專案識別系統matlab模擬,包括GUI介面Go深度學習MatlabGUI
- [Android]BMPrinter 指紋識別庫Android
- 指紋識別將走向何方?
- 基於MUSIC演算法的六陣元圓陣DOA估計matlab模擬演算法Matlab
- 基於game-based演算法的動態頻譜訪問matlab模擬GAM演算法Matlab
- matlab實現人臉識別(數學基礎原理)Matlab
- 基於matlab的車牌識別(含子程式)Matlab
- 基於深度學習的停車場車輛檢測演算法matlab模擬深度學習演算法Matlab
- 基於魚群演算法的散熱片形狀最佳化matlab模擬演算法Matlab
- 基於小波神經網路的資料分類演算法matlab模擬神經網路演算法Matlab
- 基於kalman濾波的UAV三維軌跡跟蹤演算法matlab模擬演算法Matlab
- 基於無線感測器網路的MCKP-MMF演算法matlab模擬演算法Matlab
- 基於圓柱體鏡子和光線跟蹤實現鏡反射觀測全景觀圖的matlab模擬模擬反射Matlab
- 基於WOA-SVM的乳腺癌資料分類識別演算法matlab模擬,對比BP神經網路和SVM演算法Matlab神經網路
- 基於PSO-SVM的乳腺癌資料分類識別演算法matlab模擬,對比BP神經網路和SVM演算法Matlab神經網路
- 如何設計APP的指紋識別功能APP
- 工信部:支援構建基於指紋識別、人臉識別等技術的網路身份認證
- 基於粒子群演算法的分組揹包MATLAB實現演算法Matlab
- Matlab實現模擬調製與解調Matlab
- 基於Harris角點的室內三維全景圖拼接演算法matlab模擬演算法Matlab