本文目錄一覽:
matlab 人臉檢測
其實你可以這樣,比如100張圖,人臉部分放在前50張,非人臉部分在後50張,然後訓練出來有100個特徵,然後檢測的時候用最小距離法比較,然後索引,把距離從小到大排列,比如跟第1張差6 ,2差3 …… 那排列為
2 3
1 6
………..
取最小那個就是2,那確定測試的圖片是人臉(前50為人臉)
數字圖像處理,Java VC++ matlab 哪個更適合?
Java不推薦,Matlab和VC都是可以的。
Matlab有強大的image
processing工具箱,入門較快,能對你的算法進行快速仿真,呈現。但是matlab只能做研究用,實際工程中最終都要轉為c或vc。
直接用VC++也可以,下個opencv包,是個強大的圖像處理VC++開源庫,可快速入門,對於基本處理算法和一些簡單工程都有源代碼,比如人臉檢測,人臉識別等。
希望你能找到適合自己的工具。
急用MATLAB進行人臉識別的算法修改和解釋
哎,看在100分的面子上。。。。
images=[];%([]是什麼意思?)
這個只不過是將images初始化為一個空矩陣而已。每度一幅圖像,它都將這幅圖像reshape成一個列向量,然後存入images中,最終,讀了N幅圖像,images就有N列,每一列都是一幅圖像。
(原算法是有兩種方法求特徵向量,一種奇異值分解,另一種不用奇異值分解,我這裡選用沒有用奇異值分解方法,但為什麼還是按照奇異值分解了,而且莫名出現一個S的變量,而且這段的公式我不理解)
這個問題是你人臉識別的算法問題,我不想研究。。。。
c=ceil(M/r);%正無窮大方向取整(M/r是什麼意思?為什麼要這麼做)
這個為什麼要這麼做,是為了後面subplot畫圖來計算到底需要幾行幾列的。這個對你的程序沒有任何本質的影響。這段程序就是為了把所有的人臉圖在一幅圖上分塊顯示出來。從subplot(r,c,ii);
這句可以看出,r子圖像的是行數,c是列數。那麼M就是圖像數了。。。
colormap(‘gray’);axis equal tight off;%返回線性灰度色圖(這段不理解)
這段是一系列畫圖參數的操作: colormap(‘gray’);是讓你的圖是灰度圖。axis equal是讓橫縱坐標單位一致。tight是限制畫圖的取值範圍。off是去掉坐標顯示。這些都是控制顯示效果的。完全無關緊要。至於具體效果,你可以把這句去掉看看顯示效果,然後在加上這句再看看效果有什麼變化就知道了。
%對於其他人臉圖;按前面計算出的特徵向量重構人臉圖像(這段是說什麼?)
很明顯的,這個是用你這次這20個訓練樣本的結果來重構以前的人臉數據。
基本就是這麼回事了。但是人臉特徵識別我沒研究過,你這個程序的算法非常的簡單,至於為什麼通過幾個特徵值分析就好用那我就不知道了,因為我沒研究過這個。
菜鳥級提問:Matlab 和 JAVA 的比較
matlab是比較好的,使你只專註於算法本身,而且它有大量的現成的函數和圖像處理工具
原創文章,作者:0AJ0V,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127574.html