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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

数字图像处理与分析---指纹图像增强(Python)

發(fā)布時間:2023/12/14 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数字图像处理与分析---指纹图像增强(Python) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

???圖1是一幅包含指紋的真實圖像,請使用所學(xué)的圖像處理技術(shù)進(jìn)行處理,滿足下面的要求:

???1. 使圖像中的指紋更加清晰;

???2. 考慮到冬季皮膚粗糙的情況(成像時存在噪聲,請自行添加噪聲點),盡可能去除其中的噪聲。

圖1 基礎(chǔ)題圖像

目錄

1需求分析... 3

1.1給指紋圖像加噪聲點... 3

1.2 指紋圖像去除噪點... 3

1.3 圖片轉(zhuǎn)為灰度圖... 4

1.4 灰度直方圖... 4

1.5 圖像分割... 4

1.6斷點連接... 5

1.7 使得指紋圖像平滑... 5

2 實現(xiàn)代碼... 5

2.1 添加高斯噪聲... 5

2.2 去除高斯噪聲... 6

2.3 轉(zhuǎn)換為灰度圖... 6

2.4 計算灰度直方圖... 7

2.5 指紋斷點連接處理... 7

2.6 圖片進(jìn)行形態(tài)學(xué)開操作... 8

3 實驗結(jié)果及分析... 8

4 附錄... 13

4.1 代碼目錄... 13

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

1需求分析

根據(jù)題目要求,使得圖像中的指紋更加清晰。給圖像指紋加噪聲點,盡可能去除其中的噪點。

1.1給指紋圖像加噪聲點

使用高斯噪聲給圖片添加噪聲點,高斯噪聲是指它的概率密度函數(shù)服從高斯分布(即正態(tài)分布)的一類噪聲。如果一個噪聲,它的幅度分布服從高斯分布,而它的功率譜密度又是均勻分布的,則稱它為高斯白噪聲。高斯白噪聲的二階矩不相關(guān),一階矩為常數(shù),是指先后信號在時間上的相關(guān)性。高斯白噪聲包括熱噪聲和散粒噪聲。在通信信道測試和建模中,高斯噪聲被用作加性白噪聲以產(chǎn)生加性白高斯噪聲。

高斯分布,也稱正態(tài)分布,又稱常態(tài)分布,記為N(μ,σ^2),其中μ,σ^2為分布的參數(shù),分別為高斯分布的期望和方差。當(dāng)有確定值時,p(x)也就確定了,特別當(dāng)μ=0,σ^2=1時,X的分布為標(biāo)準(zhǔn)正態(tài)分布。

高斯分布函數(shù)公式如下:

1.2 指紋圖像去除噪點

?????? 使用高斯濾波器去除噪點。

是根據(jù)高斯函數(shù)來選擇權(quán)值的線性平滑濾波器,對隨機(jī)分布和服從正態(tài)分布的噪聲有很好地濾除效果。它可以輔助大部分的邊緣檢測算法,

對圖像的邊緣進(jìn)行擴(kuò)展(邊緣厚度變大),使噪聲點的灰度降低,從而減少邊緣檢測中噪聲的數(shù)量。

二維的高斯函數(shù)公式如下:

其中σ為正態(tài)分布的標(biāo)準(zhǔn)偏差,其值決定了高斯函數(shù)的變化幅度,對應(yīng)就是濾波器的權(quán)值。高斯函數(shù)分布與二維濾波器常見模板如下:

?

1.3 圖片轉(zhuǎn)為灰度圖

灰度圖,Gray Scale Image 或是Grey Scale Image,又稱灰階圖。把白色與黑色之間按對數(shù)關(guān)系分為若干等級,稱為灰度。灰度分為256階。

?

1.4 灰度直方圖

灰度直方圖是關(guān)于灰度級分布的函數(shù),是對圖像中灰度級分布的統(tǒng)計。灰度直方圖是將數(shù)字圖像中的所有像素,按照灰度值的大小,統(tǒng)計其出現(xiàn)的頻率。灰度直方圖是灰度級的函數(shù),它表示圖像中具有某種灰度級的像素的個數(shù),反映了圖像中某種灰度出現(xiàn)的頻率。

??????

1.5 圖像分割

使用最大類間方差法最大類間方差法獲得圖像的閾值。它是按圖像的灰度特性,將圖像分成背景和目標(biāo)2部分。背景和目標(biāo)之間的類間方差越大,說明構(gòu)成圖像的2部分的差別越大,當(dāng)部分目標(biāo)錯分為背景或部分背景錯分為目標(biāo)都會導(dǎo)致2部分差別變小。因此,使類間方差最大的分割意味著錯分概率最小。

最大方差閾值是由日本學(xué)者大津(Nobuyuki Otsu)于1979年提出,是一種自適應(yīng)的閾值確定方法。算法假設(shè)圖像像素能夠根據(jù)閾值,被分成背景[background]和目標(biāo)[objects]兩部分。然后,計算該最佳閾值來區(qū)分這兩類像素,使得兩類像素區(qū)分度最大。

公式:? 記?M = 256 單通道灰度分級 Sum = 像素總數(shù)

最大方差閾值不管圖像的直方圖有無明顯的雙峰,都能得到較為滿意的結(jié)果,這種方法是與閾值自動選取的最優(yōu)方法

?

?

1.6斷點連接

統(tǒng)計當(dāng)前像素點的八鄰域,如果只存在一個像素值=255,說明只有這個個像素于當(dāng)前像素連接,當(dāng)前像素值為端點,接下來考慮16鄰域,如果有像素值=255,則將這兩個像素之間的像素值置為255

?

1.7 使得指紋圖像平滑

開操作可以平滑物體輪廓,斷開狹窄的間斷和消除細(xì)小的突出物。它具有消除細(xì)小物體,在纖細(xì)處分離物體和平滑較大物體邊界的作用。

  • 開運(yùn)算(Open Operation):先腐蝕后膨脹的過程;
  • 功能:
  • 消除小物體;
  • 在纖細(xì)處分離物體;
  • 平滑較大的邊界并不明顯改變其面積;

?

?

?

?

2 實現(xiàn)代碼

2.1 添加高斯噪聲

#添加高斯噪聲(拍照的時候常見的噪聲) import numpy as np import cv2def gasuss_noise(image, mean=0, var=0.001):'''添加高斯噪聲mean : 均值var : 方差'''#歸一化操作#數(shù)據(jù)減去對應(yīng)維度的最小值除以維度最大值減去維度最小值,這樣做可以將數(shù)值壓縮到[0,1]的區(qū)間。image = np.array(image/255, dtype=float)#生成隨機(jī)噪聲(正態(tài)分布的噪聲)# mean=0說明這一個以Y軸為對稱軸的正態(tài)分布,# var ** 0.5 正態(tài)分布的標(biāo)準(zhǔn)差,對應(yīng)分布的寬度,scale越大,正態(tài)分布的曲線越矮胖,scale越小,曲線越高瘦。# image.shape 輸出的值賦在shape里noise = np.random.normal(mean, var ** 0.5, image.shape)#將噪聲添加到圖片中out = image + noiseif out.min() < 0:low_clip = -1.else:low_clip = 0.#將圖片的像素值范圍控制在(low_clip,1)out = np.clip(out, low_clip, 1.0)#圖片還原out = np.uint8(out*255)return out

?

2.2 去除高斯噪聲

#利用高斯濾波器處理高斯噪聲image = cv2.GaussianBlur(out,(3,3),1)cv2.imshow("gasuss", image)cv2.waitKey(0)

2.3 轉(zhuǎn)換為灰度圖

#對比度增強(qiáng)#將圖片轉(zhuǎn)換成灰度圖gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)cv2.imshow("gray", gray)cv2.waitKey(0)

2.4 計算灰度直方圖

#計算灰度直方圖def calcGrayHist(image):h,w = image.shape #獲取圖片的寬高grayHist = np.zeros([256],np.int8) #返回來一個用0填充的數(shù)組for r in range(h):for c in range(w):#0-255 => 1-256 統(tǒng)計所有的灰度值grayHist[image[r,c]] += 1return grayHistdef plot_hist(image):grayHist = calcGrayHist(image)x_range = range(256)#對 x,y繪制為線條plt.plot(x_range, grayHist, 'r', linewidth=2, c='black')y_maxValue = np.max(grayHist)#設(shè)置xy軸的范圍plt.axis([0, 255, 0, y_maxValue])# 設(shè)置坐標(biāo)軸標(biāo)簽plt.xlabel('gray Level')plt.ylabel('number of pixels')# 顯示直方圖plt.show()

2.5 指紋斷點連接處理

#邊緣斷裂連接def connect(image):h,w = image.shapefor i in range(2,h-2):for j in range(2,w-2):#如果中心點位置為255 考慮八鄰域if image[i,j] == 255:num = 0for k in range(-1,2):for l in range(-1,2):if k != 0 or l != 0 and image[i+k,i+l] == 255:num += 1#如果八鄰域中只有一個點是255,說明該中心點為端點,則考慮其他領(lǐng)域if num == 1:for k in range(-2,3):for l in range(-2,3):#非八鄰域if not(k<2 and k>-2 and l<2 and l>-2) and image[i+k,i+l] == 255:image[i+k,i+l] = 255return image

?

?

2.6 圖片進(jìn)行形態(tài)學(xué)開操作

#利用形態(tài)學(xué)操作去除,將指紋邊緣毛刺地方消除#先腐蝕(毛刺)后膨脹opening = cv2.morphologyEx(connect_image, cv2.MORPH_OPEN, (10,200))cv2.imshow('opening', opening)cv2.waitKey(0)

?

3 實驗結(jié)果及分析

?

【原圖】

?

【加入高斯噪聲的圖片】

?

??????????????????????????? 原圖 ?????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 加上高斯噪聲的圖

?

兩圖對比仔細(xì)看的話,會看得出加上高斯噪聲的圖會有許多彩色的小點。這些小點就是通過高斯噪聲加上的噪點。如果看不清楚可以運(yùn)行源程序進(jìn)行查看。

?

?

?

?

?

?

?

?

【處理高斯噪聲后得圖片】

?

去除噪點后,指紋圖像會顯得有點模糊,這是因為處理噪點時候使用了高斯模糊(英語:Gaussian Blur),也叫高斯平滑。用它來減少圖像噪聲以及降低細(xì)節(jié)層次。

?

【將圖片轉(zhuǎn)換成灰度圖】

?

?

【查看灰度直方圖】

?

?

圖像的對比度是通過灰度級范圍來度量的,而灰度級范圍可通過觀察灰度直方圖得到,灰度級范圍越大代表對比度越高;反之對比度越低,低對比度的圖像在視覺上給人的感覺是看起來不夠清晰,所以通過算法調(diào)整圖像的灰度值,從而調(diào)整圖像的對比度是有必要的。最簡單的一種對比度增強(qiáng)的方法是通過灰度值的線性變換實現(xiàn)的。可以看出改灰度圖出現(xiàn)了雙峰。

?

【通過最大類間方差法(OTSU)進(jìn)行圖片像素分割】

?

?????????????????????????????????????????????????????????????? 【增強(qiáng)后的圖片

這個算法是通過背景和前景圖的像素概率值,來進(jìn)行自動閾值估計,原圖被我轉(zhuǎn)換成了灰度圖,只存在0,1像素值,這就意味著圖像形成的直方圖將是雙峰值圖像,根據(jù)前面的oTsu評估出來的閾值,直接將雙峰分割開形成指紋(前景)以及白紙(背景)。可以看出該圖片的指紋變得更清晰了,條理變粗。

?

【查看灰度直方圖】

?

按照雙峰值,將小于閾值的設(shè)為0,其他的按照公式(最大類間方差)進(jìn)行設(shè)置灰度值

?

?

?

?

?

【斷點處重連】

?

使用斷點連接技術(shù)。統(tǒng)計當(dāng)前像素點的八鄰域,如果只存在一個像素值=255,說明只有這個個像素于當(dāng)前像素連接,當(dāng)前像素值為端點,接下來考慮16鄰域,如果有像素值=255,則將這兩個像素之間的像素值置為255。

由于斷點距離太大,使用這個技術(shù)沒辦法實現(xiàn)斷點連接,理論上是可以的。只有那種像素點之間有1個像素點的位置會有像素點填充。

?

【形態(tài)學(xué)開操作】

?

先腐蝕毛刺得邊緣,再膨脹

?

開操作可以平滑物體輪廓,斷開狹窄的間斷和消除細(xì)小的突出物。它具有消除細(xì)小物體,在纖細(xì)處分離物體和平滑較大物體邊界的作用。

如果放大圖片就可以看得到紅框標(biāo)記的地方指紋出現(xiàn)了膨脹。

?

?

4 附錄

4.1 代碼目錄

exp1.py是主文件

noise.py 是添加噪聲的方法

utils.py是工具,里面有畫出灰度直方圖工具以及斷點重連方法

1.jpg 是需要處理的圖片

?

完整源碼下載地址 https://download.csdn.net/download/qq_41398448/12495945

總結(jié)

以上是生活随笔為你收集整理的数字图像处理与分析---指纹图像增强(Python)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。