計算機競賽 opencv 圖像識別 指紋識別 - python

0 前言

🔥 優質競賽項目系列,今天要分享的是

🚩 基于機器視覺的指紋識別系統

🥇學長這里給一個題目綜合評分(每項滿分5分)

  • 難度系數:3分
  • 工作量:3分
  • 創新點:4分

該項目較為新穎,適合作為競賽課題方向,學長非常推薦!

🧿 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate

1 課題背景

指紋是指人類手指上的條狀紋路, 它們的形成依賴于胚胎發育時的環境。“沒有2個完全相同的指紋”這一觀點已經得到公認。指紋識別已經有了很長一段歷史。

據考古學家證實:公元前6 000年以前, 指紋作為身份鑒別的工具已經在古敘利亞和中國開始應用。到了20世紀80年代,、光學掃描這2項技術的革新,
使得它們作為指紋取像的工具成為現實, 從而使指紋識別可以在其他領域中得以應用。

現在, 隨著取像設備的引入及其飛速發展, 生物指紋識別技術的逐漸成熟, 可靠的比對算法的發現都為指紋識別技術提供了更廣闊的舞臺。

本項目實現了一種指紋識別系統,通過過濾過程來確定用戶指紋是否與注冊的指紋匹配。通過過濾技術對捕獲的指紋進行處理,以從捕獲的圖像中去除噪聲。去除噪聲后的最終結果與注冊的指紋進行特征匹配,以確定它們是否相同。

2 效果展示

在這里插入圖片描述
在這里插入圖片描述
3

3 具體實現

3.1 圖像對比過濾

圖像融合是一種圖像增強方法,這里先融合兩個圖像便于特征點對比。利用的是opencv封裝的函數

?

    cv2.addWeighted()

相關代碼

?

    def apply_Contrast(img):alpha = 0.5 # assigned weight to the first imagebeta = 0.5 # assigned weight to the second imageimg_second = np.zeros(img.shape, img.dtype) # second image, copy of first onecontrast = cv2.addWeighted(img, alpha, img_second, 0, beta) # applying contrastreturn contrast

3.2 圖像二值化

簡介

圖像二值化( Image
Binarization)就是將圖像上的像素點的灰度值設置為0或255,也就是將整個圖像呈現出明顯的黑白效果的過程。二值圖像每個像素只有兩種取值:要么純黑,要么純白。
在這里插入圖片描述
二值圖像數據足夠簡單,許多視覺算法都依賴二值圖像。通過二值圖像,能更好地分析物體的形狀和輪廓。
在計算機視覺里,一般用矩陣來表示圖像。也就是說,無論你的圖片看上去多么好吃,對計算機來說都不過是個矩陣而已。在這個矩陣里,每一個像素就是矩陣中的一個元素。在三通道的彩色圖像中,這個元素是由三個數字組成的元組。而對于單通道的灰度圖像來說,這個元素就是一個數字。這個數字代表了圖像在這個點的亮度,數字越大像素點也就越亮,在常見的八位單通道色彩空間中,0代表全黑,255代表全白。

相關代碼

    def apply_Binarization(img):# if pixel value is greater then the threshold value it is assigned a singular color of either black or white_, mask = cv2.threshold(img, 100, 255, cv2.THRESH_BINARY_INV)return mask

3.3 圖像侵蝕細化

圖像侵蝕(腐蝕)

腐蝕(Erosion)- shrink image regions,侵蝕是數學形態學領域的兩個基本算子之一,另一個是膨脹。
它通常應用于二值圖像,但是有些版本可用于灰度圖像。 算子對二值圖像的基本作用是侵蝕前景像素(通常為白色像素)區域的邊界。
因此,前景像素的區域尺寸縮小,并且這些區域內的孔洞變大。
在這里插入圖片描述
圖像細化

細化(Thinning)- structured erosion using image pattern
matching,細化是一種形態學操作,用于從二值圖像中刪除選定的前景像素,有點像侵蝕或開口。 它可以用于多種應用程序,但是對于骨架化特別有用。
在這種模式下,通常通過將所有行減少到單個像素厚度來整理邊緣檢測器的輸出。 細化通常僅應用于二值圖像,并產生另一個二值圖像作為輸出。

在這里插入圖片描述
相關代碼

    def apply_Erosion(img):kernal = np.ones((3,3), np.uint8) # shape applied to image, 3x3 square shape is applied to contrast imageerosion = cv2.erode(img, kernal, iterations=1) # erosion mask applied to the contrast image to thin fingerprint ridgesreturn erosion

3.4 圖像增強

圖像增強的主要目的是提高圖像的質量和可辨識度,使圖像更有利于觀察或進一步分析處理。圖像增強技術一般通過對圖像的某些特征,例如邊緣信息、輪廓信息和對比度等進行突出或增強,從而更好的顯示圖像的有用信息,提高圖像的使用價值。圖像增強技術是在一定標準下,處理后的圖像比原圖像效果更好。

相關代碼

    
?    def apply_highlighting(img):
?        feature_points = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
?        Image_blue = np.array(feature_points, copy=True)
?    white_px = np.asarray([255, 255, 255])blue_px = np.asarray([0  , 255  , 255  ])(row, col, _) = feature_points.shapefor r in range(row):for c in range(col):px = feature_points[r][c]if all(px == white_px):Image_blue[r][c] = blue_pxreturn Image_blue

3.5 特征點檢測

指紋特征提取的主要目的是計算指紋核心點(Core)和細節點(Minutia)的特征信息。在提取指紋核心點時,采用的是Poincare
Index算法,該算法的思路是在指紋圖像某像素點區域內,按圍繞該點的閉合曲線逆時針方向旋轉一周,計算方向角度旋轉變化量的和,最后以計算結果來尋找核心點。計算過程中如果某像素點的Poincare
Index值為π則判定為核心點,然后便提取該點的坐標與方向場信息,記為P(Cx, Cy, θc)。

相關代碼

    
?    def show_featurepoints(img):
?        ?    #show feature points found in fingerprint using orb detector
?    orb  = cv2.ORB_create(nfeatures=1200)
?    keypoints, descriptors = orb.detectAndCompute(img, None)
?    featurepoint_img = img
?    featurepoint_img = cv2.drawKeypoints(featurepoint_img, keypoints, None, color=(255, 0 ,0))?    return featurepoint_img

4 OpenCV

簡介
Opencv(Open Source Computer Vision
Library)是一個基于開源發行的跨平臺計算機視覺庫,它實現了圖像處理和計算機視覺方面的很多通用算法,已成為計算機視覺領域最有力的研究工具。在這里我們要區分兩個概念:圖像處理和計算機視覺的區別:圖像處理側重于“處理”圖像–如增強,還原,去噪,分割等等;而計算機視覺重點在于使用計算機來模擬人的視覺,因此模擬才是計算機視覺領域的最終目標。
OpenCV用C++語言編寫,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,
如今也提供對于C#、Ch、Ruby,GO的支持。

基礎功能速查表
在這里插入圖片描述

5 最后

🧿 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40485.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40485.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40485.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue引入Echarts報錯 import * as echarts from “echarts“;

項目場景: 已經下載好echarts cnpm i echarts Vue引入Echarts import echarts from echarts mounted() {this.myChart echarts.init(document.querySelector(.right))this.myChart.setOption({title: {text: 消費列表,left: center},...問題描述 原因分析&#…

【100天精通python】Day38:GUI界面編程_PyQT從入門到實戰(中)

目錄 專欄導讀 4 數據庫操作 4.1 連接數據庫 4.2 執行 SQL 查詢和更新: 4.3 使用模型和視圖顯示數據 5 多線程編程 5.1 多線程編程的概念和優勢 5.2 在 PyQt 中使用多線程 5.3 處理多線程間的同步和通信問題 5.3.1 信號槽機制 5.3.2 線程安全的數據訪問 Q…

日常BUG——通過命令行創建vue項目報錯

😜作 者:是江迪呀??本文關鍵詞:日常BUG、BUG、問題分析??每日 一言 :存在錯誤說明你在進步! 一、問題描述 在使用vue命令行創建一個vue項目時,出現一下的錯誤: vue create my…

UDP數據報結構分析(面試重點)

在傳輸層中有UDP和TCP兩個重要的協議,下面將針對UDP數據報的結構進行分析 UDP結構圖示 UDP報頭結構的分析 UDP報頭有4個屬性,分別是源端口,目的端口,UDP報文長度,校驗和,它們都占16位2個字節,所…

.devos勒索病毒解密方法|勒索病毒解決|勒索病毒恢復|數據庫修復

導言: 隨著科技的迅猛發展,網絡安全問題也日益凸顯。近期,一種名為 .devos 的勒索病毒在網絡安全領域引起了廣泛的關注和警惕。本文91數據恢復將 探討如何解密被其加密的數據文件,并提供預防措施以避免受到類似威脅的侵害。 如不幸…

【java面向對象中static關鍵字】

提綱 static修飾成員變量static修飾成員變量的應用場景static修飾成員方法static修飾成員方法的應用場景static的注意事項static的應用知識:代碼塊static的應用知識:單例設計模式 static靜態的意思,可以修飾成員變量,成員方法&a…

FPGA_學習_14_第一個自寫模塊的感悟和ila在線調試教程與技巧(尋找APD的擊穿偏壓)

前一篇博客我們提到了,如果要使用算法找到Vbr,通過尋找APD采集信號的噪聲方差的劇變點去尋找Vbr是一個不錯的方式。此功能的第一步是在FPGA中實現方差的計算,這個我們已經在上一篇博客中實現了。 繼上一篇博客之后,感覺過了很久了…

【Image captioning】ruotianluo/self-critical.pytorch之1—數據集的加載與使用

【Image captioning】ruotianluo/self-critical.pytorch之1—數據集的加載與使用 作者:安靜到無聲 個人主頁 數據加載程序示意圖 使用方法 示例代碼 #%%from __future__ import absolute_import from __future__ import division from __future__ import print_…

Flink-網絡流控及反壓剖析

參考: Apache Flink學習網

開源,微信小程序 美食便簽地圖(FoodNoteMap)的設計與開發

目錄 0 前言 1 美食便簽地圖簡介 2 美食便簽地圖小程序端開發 2.1技術選型 2.2前端UI設計 2.3主頁界面 2.4個人信息界面 2.5 添加美食界面 2.6美食便簽界面 2.8 美食好友界面 2.9 美食圈子界面 2.10 子頁面-店鋪詳情界面 2.11 后臺數據緩存 2.12 訂閱消息通知 2.1…

Redis為什么能如此之快

推薦閱讀 AI文本 OCR識別最佳實踐 AI Gamma一鍵生成PPT工具直達鏈接 玩轉cloud Studio 在線編碼神器 玩轉 GPU AI繪畫、AI講話、翻譯,GPU點亮AI想象空間 資源分享 「java、python面試題」來自UC網盤app分享,打開手機app,額外獲得1T空間 https://dr…

“深入探索JVM內部機制:解密Java虛擬機原理“

標題:深入探索JVM內部機制:解密Java虛擬機原理 摘要:本文將深入探索Java虛擬機(JVM)的內部機制,揭示其工作原理和關鍵組成部分,包括類加載、內存管理、垃圾回收、即時編譯和運行時數據區域等。…

探索區塊鏈世界:去中心化應用(DApp)的嶄新前景

隨著科技的不斷發展,區塊鏈技術逐漸引領著數字時代的潮流。在這個充滿創新和變革的領域中,去中心化應用(DApp)成為了備受矚目的焦點。DApp 不僅改變了傳統應用程序的范式,還在金融、社交、游戲等多個領域展現出了廣闊的…

GRPC 鏈接 NODE 和 GOLANG

GRPC 鏈接 NODE 和 GOLANG GRPC 了解 什么是GRPC gRPC 采用了 Protocol Buffers 作為數據序列化和反序列化的協議,可以更快速地傳輸數據,并支持多種編程語言的跨平臺使用gRPC 提供“統一水平層”來對此類問題進行抽象化。 開發人員在本機平臺中編寫專…

打造專屬照片分享平臺:快速上手Piwigo網頁搭建

文章目錄 通過cpolar分享本地電腦上有趣的照片:部署piwigo網頁前言1.Piwigo2. 使用phpstudy網頁運行3. 創建網站4. 開始安裝Piwogo 總結 🍀小結🍀 🎉博客主頁:小智_x0___0x_ 🎉歡迎關注:&#x…

深度學習1:通過模型評價指標優化訓練

P(Positive)表示預測為正樣本,N(negative)表示預測為負樣本,T(True)表示預測正確,F(False)表示預測錯誤。 TP:正樣本預測正確的數量(正確檢測) FP:負樣本預測正確數量(誤檢測) TN…

【AI實戰】BERT 文本分類模型自動化部署之 dockerfile

【AI實戰】BERT 文本分類模型自動化部署之 dockerfile BERTBERT 文本分類模型基于中文預訓練bert的文本分類模型針對多分類模型的loss函數樣本不均衡時多標簽分類時 dockerfile編寫 dockerfilebuild鏡像運行docker測試服務 參考 本文主要介紹: 基于BERT的文本分類模…

卷積神經網絡CNN

卷積神經網絡CNN 1 應用領域1 檢測任務2 分類和檢索3 超分辨率重構4 醫學任務5 無人駕駛6 人臉識別 2 卷積的作用3 卷積特征值計算方法4 得到特征圖表示5 步長和卷積核大小對結果的影響1 步長2 卷積核 6 邊緣填充方法7 特征圖尺寸計算與參數共享8 池化層的作用9 整體網絡架構10…

【GitLab私有倉庫】如何在Linux上用Gitlab搭建自己的私有庫并配置cpolar內網穿透?

文章目錄 前言1. 下載Gitlab2. 安裝Gitlab3. 啟動Gitlab4. 安裝cpolar5. 創建隧道配置訪問地址6. 固定GitLab訪問地址6.1 保留二級子域名6.2 配置二級子域名 7. 測試訪問二級子域名 前言 GitLab 是一個用于倉庫管理系統的開源項目,使用Git作為代碼管理工具&#xf…

ngModel和formControlName處理表單控件

ngModel 和 formControlName 不能同時在同一個表單控件上使用; 二者都用于在 Angular 中處理表單控件的值,但是它們的底層實現方式不同。 ngModel 是 Angular 提供的雙向數據綁定指令,它可以將表單控件的值與組件類中的屬性進行雙向綁定。當…