最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【驗證碼識別】基于遺傳算法優(yōu)化OUST結(jié)合BP神經(jīng)網(wǎng)絡(luò)實現(xiàn)數(shù)字驗證碼識別含Matlab源碼

2022-04-04 15:24 作者:Matlab工程師  | 我要投稿

1 簡介

本項目基于MATLAB完成數(shù)字驗證碼識別的GUI設(shè)計,圖像處理,驗證碼生成、識別等功能。采用BP神經(jīng)網(wǎng)絡(luò)來實現(xiàn)對驗證碼圖像的識別。驗證碼的識別,大概分為圖片預(yù)處理、分割字符、識別字符三個過程,其中分割字符最為困難。本文采用基于遺傳算法和最大熵優(yōu)化的圖像分割技術(shù)、大津法(OTSU)、自定義閾值三種技術(shù)進行字符分割,并作進一步分析。利用英國薩里大學(xué)提供的印刷體數(shù)字數(shù)據(jù)集,共10160張圖片,90%的數(shù)據(jù)用于訓(xùn)練BP神經(jīng)網(wǎng)絡(luò),剩余10%的數(shù)據(jù)用于測試,最終識別準(zhǔn)確率達到93.47%,利用訓(xùn)練所得BP模型完成識別字符,最終驗證碼圖像識別效果較佳。

2 部分代碼

% 創(chuàng)建數(shù)據(jù)集% buildataset: 用來創(chuàng)建神經(jīng)網(wǎng)絡(luò)適合的訓(xùn)練集function [inputs outputs] = builddataset(pathname,handles) ? ?% 創(chuàng)建數(shù)據(jù)集 ? ?% pathname='D:\課程\計算智能\BP數(shù)字驗證碼\img\'; ? ?file = dir(pathname); %除去“.”“..”兩個文件夾 ? ?file_num = size(file,1)-2; ? ?temp = cat(1,strvcat(file(10).name,file.name)); ? ?class = temp(4:13,:); ? ?inputs = []; ? ?outputs = []; ? ?for i = 1:file_num ? ? ? ?pathName = [pathname,class(i,:),'\']; ? ? ? ?temp_png = dir([pathName,'\*.png']); ? ? ? ?temp_imgName = cat(1,strvcat(temp_png(10).name,temp_png.name)); ? ? ? ?pic_num = size(temp_png,1); ? ? ? ?imgName = temp_imgName(2:pic_num+1,:); ?%得到文件夾內(nèi)pic_num張圖片的名稱 ? ? ? ?for j = 1:pic_num ? ? ? ? ? ?I2 = 1 - im2bw(imread([pathName,imgName(j,:)]),0.9); % 轉(zhuǎn)換為二值圖像并反轉(zhuǎn) ? ? ? ? ? ?L= bwlabel(I2,8); %找到圖中的連通域,num為連通域數(shù)量 ? ? ? ? ? ?imgsize = size(L); ? ? ? ? ? ?Idx = zeros(1,4); ? ? ? ? ? ?flag = 0; ? ? ? ? ? ?for k = 1 : imgsize(1, 1) ? ? ? ? ? ? ? ?if size(find(L(k,:) == 1))==[1 0] ? ? ? ? ? ? ? ? ? ?flag_temp = false; ? ? ? ? ? ? ? ?else ? ? ? ? ? ? ? ? ? ?flag_temp = true; ? ? ? ? ? ? ? ?end ? ? ? ? ? ? ? ?if flag == 0 && flag_temp ? ? ? ? ? ? ? ? ? ?Idx(1,1) = k-1; ? ? ? ? ? ? ? ? ? ?flag = 1; ? ? ? ? ? ? ? ?end ? ? ? ? ? ? ? ?if flag == 1 && ~flag_temp ? ? ? ? ? ? ? ? ? ?Idx(1,2) = k; ? ? ? ? ? ? ? ? ? ?flag = 2; ? ? ? ? ? ? ? ?end ? ? ? ? ? ? ? ?if k == imgsize(1, 1) && flag == 1 ? ? ? ? ? ? ? ? ? ?Idx(1,2) = k; ? ? ? ? ? ? ? ? ? ?flag = 2; ? ? ? ? ? ? ? ?end ? ? ? ? ? ?end ? ? ? ? ? ?flag = 0; ? ? ? ? ? ?for k = 1 : imgsize(1, 2) ? ? ? ? ? ? ? ?if size(find(L(:,k) == 1))==[0 1] ? ? ? ? ? ? ? ? ? ?flag_temp = false; ? ? ? ? ? ? ? ?else ? ? ? ? ? ? ? ? ? ?flag_temp = true; ? ? ? ? ? ? ? ?end ? ? ? ? ? ? ? ?if flag == 0 && flag_temp ? ? ? ? ? ? ? ? ? ?Idx(1,3) = k-1; ? ? ? ? ? ? ? ? ? ?flag = 1; ? ? ? ? ? ? ? ?end ? ? ? ? ? ? ? ?if flag == 1 && ~flag_temp ? ? ? ? ? ? ? ? ? ?Idx(1,4) = k; ? ? ? ? ? ? ? ? ? ?flag = 2; ? ? ? ? ? ? ? ?end ? ? ? ? ? ? ? ?if k == imgsize(1, 2) && flag == 1 ? ? ? ? ? ? ? ? ? ?Idx(1,4) = k; ? ? ? ? ? ? ? ? ? ?flag = 2; ? ? ? ? ? ? ? ?end ? ? ? ? ? ?end ? ? ? ? ? ?for k=1:4 ? ? ? ? ? ? ? ?if Idx(1,k) == 0 ? ? ? ? ? ? ? ? ? ?Idx(1,k) = 1; ? ? ? ? ? ? ? ?end ? ? ? ? ? ?end ? ? ? ? ? ?t = I2(Idx(1,1):Idx(1,2), Idx(1,3):Idx(1,4)); ? ? ? ? ? ?I2 = imresize(t,[32,32]); %縮放至32*32 ? ? ? ? ? ?I2 = im2bw(I2,0.5); ? ? ? ? ? ?axes(handles.axes1); ? ? ? ? ? ?if j == 200 ? ? ? ? ? ? ? ?j; ? ? ? ? ? ?end ? ? ? ? ? ?imshow(I2); ? ? ? ? ? ?[m n]=size(I2); ? ? ? ? ? ? ? ? ? ? ? ?A=reshape(I2',[1 m*n]); ? %將I2矩陣變?yōu)?行m*n列的矩陣i ? ? ? ? ? ?inputs=[inputs;A]; ? ? ? ? ? ?B=zeros(1,file_num); ? ? ? ? ? ?B(1,i) = 1; ? ? ? ? ? ?outputs = [outputs;B]; ? ? ? ?end ? ?end ? ?save inputs.mat inputs; ? ?save outputs.mat outputs; ? ?msgbox('數(shù)據(jù)集創(chuàng)建成功!', '提示');end

3 仿真結(jié)果

4 參考文獻

[1]王盟. 基于遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的手寫體字母識別[D]. 河北科技大學(xué), 2016.

博主簡介:擅長智能優(yōu)化算法、神經(jīng)網(wǎng)絡(luò)預(yù)測、信號處理、元胞自動機、圖像處理、路徑規(guī)劃、無人機等多種領(lǐng)域的Matlab仿真,相關(guān)matlab代碼問題可私信交流。

部分理論引用網(wǎng)絡(luò)文獻,若有侵權(quán)聯(lián)系博主刪除。




【驗證碼識別】基于遺傳算法優(yōu)化OUST結(jié)合BP神經(jīng)網(wǎng)絡(luò)實現(xiàn)數(shù)字驗證碼識別含Matlab源碼的評論 (共 條)

分享到微博請遵守國家法律
炉霍县| 英吉沙县| 睢宁县| 仙居县| 磐安县| 南平市| 民乐县| 南阳市| 东至县| 五家渠市| 江川县| 溆浦县| 宣武区| 偃师市| 阿鲁科尔沁旗| 铜山县| 乐昌市| 新晃| 曲靖市| 潜江市| 兰溪市| 江阴市| 东兰县| 墨竹工卡县| 西华县| 突泉县| 桃源县| 鄂州市| 罗城| 淳安县| 比如县| 襄樊市| 奎屯市| 宝清县| 和静县| 河池市| 麻阳| 明溪县| 修水县| 五大连池市| 玉林市|