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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

基于Matlab的人脸识别设计(PCA)

發布時間:2024/8/1 pytorch 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于Matlab的人脸识别设计(PCA) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1??PCA主成分分析

圖像預處理是人臉識別的重要組成部分。由于圖像采集環境不同,輸入測試圖像常常存在一些問題,如不同程度的噪聲和圖像對比度不足。再者,獲取距離和焦距大小之類的外部因素也使得面部信息在整個圖像中具有不確定的大小和位置。為了確保收集的面部圖像的質量,必須在識別之前預處理測試圖像。所以下文將會對本次設計中的圖像預處理過程進行介紹。

1.1 ?樣本圖像預處理

樣本圖像的選擇與處理是實現人臉識別的基礎,故在選擇樣本圖像時要進行人為的干預。首先樣本圖像要保證人物特征的明顯與背景單一,才能使盡可能多的與人臉相關的關鍵被保留下來。其次是圖像的分辨率和寬高比。在進行之后的圖像處理時,相同的分辨率可以便于程序對圖像進行更高效的運算。而相同的寬高比將會使樣本圖像的變量剛好的控制在圖像本事,使本次課程設計更具有說明性。

確定好樣本圖像后,需要對圖像進行灰度處理。因為拍攝環境、光圈、樣本圖像人物的身體狀況不同,會產生不同色彩的人臉信息,這些色彩的不同會影響對圖像人臉本身的特征識別。同時傳統的彩色RGB圖像數據量過大,所以處理彩色圖像時其運算會時間過高。灰度處理代碼如下:

pic1 = rgb2gray(imread('1.jpg'));

處理后效果如圖1:

圖1?灰度轉換對比圖

圖像數據量和圖像的大小有著直接的關系,即使是將圖像像素縮至150*180后(PS:此處為小弟手動更改的像素),也會出現數據量過大導致運行緩慢的現象。所以需要對灰度處理后的的圖形進行縮小。具體代碼如下:

namud = 0.5; ?pic1 = rgb2gray(imread('1.jpg'));pic1 = imresize(pic1,namud); ?

在完成了樣本圖像外觀上的所有操作后,則需要對其轉化后的數據進行儲存,為方便后續操作,可將所有的樣本圖像以多個矩陣的方式儲存在一個細胞體結構中,并計算得到某一個圖像的矩陣行列大小(m、n),從而將一個細胞體中的所有行為m、列為n的矩陣,轉化成大小為n*m的列矩陣,這樣方便后續的PCA算法運算。上述過程的代碼如下:

[m,n] = size(pic1);pic_all = {pic1,pic2,pic3,pic4,pic5,pic6,pic7,pic8,pic9,pic10};for i=1:10FaceData(i,:) = reshape(pic_all{i},1,m*n);end

為了節省存儲空間,Matlab為圖像提供了特殊的數據類型uint8(8位無符號整數),以此方式存儲的圖像稱作8位圖像。當使用函數imread()時,其會把灰度圖像存入一個8位矩陣,當為RGB圖像時,就存入8位RGB矩陣中。因此,Matlab讀入圖像的數據是uint8,而Matlab中數值一般采用double型(64位)存儲和運算。所以要先將圖像轉為double格式的才能運算,即將uint8(0-255范圍類型)準換為double(0-1范圍類型)。其代碼如下:

FaceData = double(FaceData)/255;

至此對樣本圖像的預處理全部結束,接下來則需要對其進行運算得到其圖像特征,從而進行與測試人臉的圖像識別。

1.2??測試圖像預處理

測試圖像即需要進行人臉識別與數據庫中進行比對的圖像,但在處理之前因為后續使用的PCA的算法,故需要進行對測試圖像進行像素的轉換,并保存轉換后的圖像,其代碼如下:

[filename,pathname]=uigetfile('*','choose a picture');path=[pathname,filename];Origimg=imread(path);img=imresize(Origimg,[180 150]);path='E:\Matlab_face';filename = 'test.jpg';newpath=fullfile(path,filename);imwrite(img,newpath,'jpg');對測試圖像的預處理與對樣本圖像的預處理一致。其代碼如下:pic = rgb2gray(img2find); ??pic = imresize(pic,namud);[m2,n2] = size(pic);pic = reshape(pic,1,m2*n2);pic = double(pic)/255;

2?PCA主成分分析

PCA(Principal Component Analysis,主成分分析)是一種常用的數據分析方法。它是一種對數據進行分析的技術,最重要的應用是對原有數據進行簡化。PCA通過線性變換將原始數據變換為一組各維度線性無關的表示,可用于提取數據的主要特征分量,常用于高維數據的降維。這種方法可以有效的找出數據中最“主要”的元素和結構,去除噪音和冗余,將原有的復雜數據降維,揭示隱藏在復雜數據背后的簡單結構。它的優點是簡單,而且無參數限制,可以方便的應用與各個場合。

2.1 PCA算法分析

表1 PCA算法分析所涉及的變量說明

變量名稱

變量說明

m

樣本圖像個數

Cell

樣本圖像矩陣

avg

均值

n

樣本矩陣中最大列數

Z

減去均值后的樣本矩陣

C

協方差矩陣

Y

降維后的圖像矩陣

T

表轉置

V

協方差矩陣的特征值

D

協方差矩陣特征值對應的特征向量

將每一張樣本圖像轉換為大小為n(1*75*90)的列向量Xm,并儲存在一個矩陣中。所得樣本矩陣可表示為:

樣本矩陣的每一進行零均值化求樣本矩陣中每列的均值,并轉化為行向量,再轉化為行為m列為n的矩陣即得到均值向量(Avg),使細胞體向量中與均值向量相減,即完成對樣本矩陣的零均值化

計算協方差矩陣:

求出協方差矩陣的特征值V及對應的特征向量D將特征向量按對應特征值大小從上到下按行排列成矩陣,取前k行組成矩陣P

將樣本數據與矩陣P相乘,即得到降維到k維后的數據

至此PCA過程完成。

2.2.2 PCA代碼應用

經過上文的PCA算法分析我們可以基本得到其運算流程。以m條n維數據為例,即將原始數據按列組成n行m列矩陣X將X的每一行進行零均值化,即減去這一行的均值求出協方差矩陣?求出協方差矩陣的特征值及對應的特征向量將特征向量按對應特征值大小從上到下按行排列成矩陣,取前k行組成矩陣PY=PX即為降維到k維后的數據其具體代碼如下:

function Cell_all = PCA(img,k) ?[m,n] = size(img);img_mean = mean(img);img_mean_all = repmat(img_mean,m,1);Z = img - img_mean_all;T = Z'*Z/m; ???[V,D] = eigs(T,k);img_new = img*V*D; ?Cell_all = {img_new,V,D};

通過以上代碼即可實現對樣本人臉圖片的降維與數據處理。同時因為處理測試人臉圖像使用的也為PCA故其代碼與上面類似即:

pic_done = pic*V*D ;

3?判別圖像間的相似性

3.1最小距離法

在樣本人臉照片完成了預處理和PCA運算后,即將所有的樣本人臉數據都存儲在一個人臉庫中。再將測試人臉照片完成預處理與PCA運算后,得到其運算后的數據。之后便確定圖像間的相似性,即判斷測試圖像與樣本圖像之間的關系,并找到測試圖像對應的樣本圖像,從而實現人臉識別功能。在這里選用最小距離法來判定圖像間的相似性,從而實現人臉識別,具體代碼如下

for i=1:m1 ?face(i) = norm(img_all(i,:)-pic_done); ?end ?FaceFind = find(face?== min(face)); ?

在這里我們把PCA之后的圖像映射到坐標之間的幾何距離作為評判與哪一個人臉最近的標準 。其中黑色圓點為待識別圖像坐標,紅色圓點為匹配圖像坐標,可見其兩點的距離最近。

參考文獻

  • 左騰. 人臉識別技術綜述[J]. 軟件導刊, 2017?182-185.
  • GatsbyNewton. PCA算法詳解PCA算法詳解_GatsbyNewton-CSDN博客_pca算法. CSDN,2015
  • 王文慶.人臉識別原理與實踐[M].北京:中國工信出版社,2018.3:27-40
  • 周品.Matlab圖像處理與圖形應用界面[M].北京:清華大學出版社,2013:397-435
  • PS:1.極其建議大家閱讀?PCA算法詳解_GatsbyNewton-CSDN博客_pca算法PCAPCA(Principal Component Analysis,主成分分析)是一種常用的數據分析方法。PCA通過線性變換將原始數據變換為一組各維度線性無關的表示,可用于提取數據的主要特征分量,常用于高維數據的降維。網上關于PCA的文章有很多,但是大多數只描述了PCA的分析過程,而沒有講述其中的原理。這篇文章的目的是介紹PCA的基本數學原理,幫助讀者了解PCA的工作機制是什么。當然我https://blog.csdn.net/u010376788/article/details/46957957

    ? ? ? ? 2.本文的人臉識別率不高,但是應對一般的課程設計還是可以,畢竟不會有人真的一張一張的數你的照片匹配率。

    ? ? ? ? 3.其他函數知識點:

    matlab中 rgb2gray() 函數 具體實現_corilei的博客-CSDN博客_rgb2gray函數? ? ????????簡介????rgb2gray是matlab內部一種處理圖像的函數,通過消除圖像色調和飽和度信息同時保留亮度實現將將RGB圖像或彩色圖轉換為灰度圖像,即灰度化處理的功能,調用這個功能的格式是I = rgb2gray(RGB),意思是將真彩色圖像RGB轉換為灰度強度圖像I 。????????調用格式I = rgb2gray(RGB)newmap= rgb2gray(map)函數...https://blog.csdn.net/corilei/article/details/80559448matlab的imread_深藏功與名-CSDN博客_imread函數 matlabimread(matlab)????????????????????????????????????????????函數語法?A?=?imread(filename,?fmt)[X,?map]?=?imread(...)[...]?=?imread(filename)[...]?=?imread(URL,...)[...]?=?imread(https://blog.csdn.net/langb2014/article/details/48465795Matlab中cell數組的使用_ljh0302的專欄-CSDN博客_matlab讀取cell數組轉載地址:http://www.matlabsky.com/forum.php?mod=viewthread&tid=21089從celll使用說起在讀取文件的時候,cell數組(各種翻譯都有,元胞數組,單元數組...直接無視)是MATLAB的寵兒,基本都會出現,長期使用發現頻率比struct高不少~無論是Import Data還是使用textscan之類獲取數據,從長期使用高級語言的角度https://blog.csdn.net/ljh0302/article/details/50819018MATLAB的reshape函數_xtingjie的博客-CSDN博客_reshape函數matlab用法一作用是將4*6的A,變成6*4的B,數據排列規則:對A逐列掃描,對B逐列填充,也就是先處理完第一列,在處理第二列,再第三列。。。用法二 A是4*6的,C是2*3*4的,都有24個元素,變換前后的矩陣元素個數一樣總結reshape函數總是將原矩陣A,重組為新矩陣B,這里A、B元素個數需相同。重組的規則如下: 總是先處理低維的,再處理高維的,比如要把4*6的A變為6*4的B,就要先掃描A的第一https://blog.csdn.net/xtingjie/article/details/70991097matlab圖像uint8和double的關系,除以255乘以255_三眼二郎-CSDN博客_matlab uint8和doublematlab默認圖像的儲存和讀取方式為uint8但是為了計算和表達方便matlab針對uint8和double都有相應操作有時我們會疑惑一會iMG = double(img);imshow(uint8(IMG)*25)一會imshow(IMG)imwrite同樣有如此操作為什么呢??????????我們在使用時可以分成兩個體系在用uint8時,matlab默認圖像為[0,2...https://blog.csdn.net/a6333230/article/details/96474738matlab中repmat函數的用法_恰同學少年的博客-CSDN博客_repmat函數matlabB = repmat(A,m,n)B = repmat(A,[m n])B = repmat(A,[m n p...])這是一個處理大矩陣且內容有重復時使用,其功能是以A的內容堆疊在(MxN)的矩陣B中,B矩陣的大小由MxN及A矩陣的內容決定,如果A是一個3x4x5的矩陣,有B = repmat(A,2,3)則最后的矩陣是6x12x5例如:>>B=repmat( [1https://blog.csdn.net/majinlei121/article/details/50762997圖像處理中uint8和double的問題_大丈夫-CSDN博客_uint8和double為了節省存儲空間,matlab為圖像提供了特殊的數據類型uint8(8位無符號整數),以此方式存儲的圖像稱作8位圖像。imread把灰度圖像存入一個8位矩陣,當為RGB圖像時,就存入8位RGB矩陣中。因此,matlab讀入圖像的數據是uint8,而matlab中數值一般采用double型(64位)存儲和運算。所以要先將圖像轉為double格式的才能運算,I2=im2double(I1)https://blog.csdn.net/yjl9122/article/details/50937966

    總結

    以上是生活随笔為你收集整理的基于Matlab的人脸识别设计(PCA)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日本熟妇乱子伦xxxx | 亚洲国产精品久久精品怡红院 | 91网址在线播放 | 国产免费一区二区三区 | 中文字幕资源网 | 国产精品sm调教免费专区 | 欧美三p | 中文字幕日韩视频 | 免费的a级片 | 五月婷婷在线观看 | 中文av一区 | 91精品国产欧美一区二区成人 | 欧美动态色图 | 日av一区 | jzzijzzij亚洲成熟少妇在线观看 久久久精品人妻一区二区三区 | 波多野结衣电影免费观看 | 人妻丰满熟妇无码区免费 | 菊肠扩张playh| 国产精品7777 | 日本色悠悠 | 久久久999国产精品 天堂av中文在线 | 狠狠一区二区 | 91日韩| 天堂中文在线资源 | 污视频网站在线观看 | 91美女高潮出水 | 久久亚洲精品视频 | 四虎在线免费观看视频 | 午夜久久视频 | 欧美三级网站 | 裸体av淫导航 | 经典av在线 | 电影桑叶2在线播放完整版 222aaa | 尼姑福利影院 | 成人在线h| 国产精品丝袜黑色高跟 | 在线cao| 娇小的粉嫩xxx极品 国产精品人人爽人人爽 | 下面一进一出好爽视频 | 丁香婷婷综合激情五月色 | 国产精品tv | 黄色免费av | 国产乱轮视频 | 99热这里有 | 欧美专区 日韩专区 | 国产精选第一页 | 超碰碰碰碰 | 超碰超在线| 久久久av片 | 中文字幕第23页 | 99久久国产热无码精品免费 | 看全黄大色黄大片美女人 | 久久久xxx| 久精品免费视频 | 澳门三级 | 久久99精品久久久久 | 三年中国片在线高清观看 | 巨胸爆乳美女露双奶头挤奶 | 人妻熟女一区二区三区app下载 | 中文字幕精品一区二区精 | 少妇熟女视频一区二区三区 | 色欲一区二区三区精品a片 在线观看黄网站 | 真人抽搐一进一出视频 | 人人爽人人插 | 欧美黄色免费网站 | 亚洲性大片| 午夜小视频免费 | 国产又黄又爽 | 香港一级淫片免费放 | 亚洲天堂伦理 | 欧美色视频在线 | 黄瓜视频在线播放 | 国产精品1区2区 | 人人草人 | 香蕉网站在线 | 成人在线视频一区二区 | 日美一级片 | 亚洲欧美视频在线观看 | 久久99热这里只有精品 | 男女69视频 | 欧美成人做爰大片免费看黄石 | 日操夜操天天操 | youjizz中国少妇 | 亚洲AV无码片久久精品 | 99久久精品一区二区 | 欧美三级影院 | 亚洲精品免费在线观看视频 | 成人亚洲在线 | 99产精品成人啪免费网站 | 波多野结衣免费视频观看 | 尤物久久 | 手机成人免费视频 | 蜜臀av在线免费观看 | 日韩av在线看 | 俄罗斯一级片 | 麻豆传媒网站入口 | 91国产丝袜播放在线 | 1000部拍拍拍18勿入免费视频 | 国产白丝在线观看 |