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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

人工智能-用matlab实现数字识别

發布時間:2023/12/14 循环神经网络 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 人工智能-用matlab实现数字识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給定一張模板圖待識別圖,將待識別的數字都讀寫出來。(模板圖和待識別的圖片中數字的字體的大小一致)

(國慶研究了很久,放棄了,找到師姐,在師姐的基礎上增加了三行識別,如果要多行,需要改進。)

注意:圖片格式為單色位圖.bmp

模板圖:1.bmp

待識別圖:3.bmp

clc clear %讀取 x=imread('1.bmp');%讀取標準圖片 [M,N]=size(x); %計算圖片大小 t0=0; t1=0; A_number=1; for i=1:1:M %獲取上下邊界if (t0==0)&&(sum(x(i,:))~=N)I0=i;t0=1;endif (t0==1)&&(sum(x(i,:))==N)I1=i-1;t0=0;end end distanceI=I1-I0; %標準圖像上下邊界差distanceJ=0; %標準圖像左右距離賦值 for j=1:1:N %獲取左右邊界if (t1==0) &&sum(x(I0:I1,j))~=I1-I0+1J0=j;t1=1;endif (t1==1) &&sum(x(I0:I1,j))==I1-I0+1J1=j-1;t1=0;if J1-J0>distanceJdistanceJ=J1-J0; %獲取左右邊界最大值endend end if mod(distanceI,5)~=0distanceI=distanceI+(5-mod(distanceI,5));%求出標準框的寬 end if mod(distanceJ,5)~=0distanceJ=distanceJ+(5-mod(distanceJ,5));%求出標準框的高 end height=distanceI/5; weight=distanceJ/5;%得到每個小框的高和寬 for C_number=1:10c1(C_number).C=ones(distanceI,distanceJ);%建立標準框 end jishu=1; for j=1:1:N %獲取左右邊界if (t1==0) &&sum(x(I0:I1,j))~=I1-I0+1J0=j;t1=1;endif (t1==1) &&sum(x(I0:I1,j))==I1-I0+1J1=j-1;t1=0;c1(jishu).C(round((distanceI-(I1-I0))/2):round((distanceI-(I1-I0))/2+I1-I0),round((distanceJ-(J1-J0))/2):round((distanceJ-(J1-J0))/2+J1-J0))=x(I0:I1,J0:J1);%將數字寫入標準框jishu=jishu+1; end end temp=1; for i=1:1:(jishu-1)for r = 1:1:5for s= 1:1:5x1=c1(temp).C(((r-1)*height+1):(r*height),((s-1)*weight+1):(s*weight));%獲取圖中各個數字u(r,s)=((weight*height)-sum(sum(x1(:,:))))/(height*weight);%隸屬度endendtemp=temp+1;a(A_number).A=u;%范例的隸屬度矩陣集aA_number=A_number+1; end%識別 y=imread('3.bmp');%讀圖 [C,D]=size(y); %計算圖片大小 t0=0; t1=0; m=1; for i=1:1:3S0(i)=zeros(1,1);S1(i)=zeros(1,1);disI(i)=zeros(1,1); end yanz=[]; bij_value = []; for i=1:1:C%獲取上下邊界if (t0==0)&&sum(y(i,:))~=DS0(m)=i;t0=1;endif (t0==1)&&(sum(y(i,:))==D)S1(m)=i-1;t0=0;disI(m)=S1(m)-S0(m);m=m+1;end end for k=1:1:(m-1)B_number=1;number=1;for j=1:1:D%獲取左右邊界if (t1==0) &&sum(y(S0(k):S1(k),j))~=S1(k)-S0(k)+1J0=j;t1=1;endif (t1==1) &&sum(y(S0(k):S1(k),j))==S1(k)-S0(k)+1J1=j-1;t1=0;number=number+1;%計數:一共讀取了多少個數字endendfor D_number = 1:(number-1)%最終計數會比真實數字個數多一c2(D_number).C=ones(distanceI,distanceJ);%建立標準框endjishu1=1;for j=1:1:D%獲取左右邊界if (t1==0) &&sum(y(S0(k):S1(k),j))~=S1(k)-S0(k)+1J0=j;t1=1;endif (t1==1) &&sum(y(S0(k):S1(k),j))==S1(k)-S0(k)+1J1=j-1;t1=0;c2(jishu1).C(round((distanceI-(S1-S0))/2):round((distanceI-(S1-S0))/2)+S1(k)-S0(k),round((distanceJ-(J1-J0))/2):round((distanceJ-(J1-J0))/2)+J1-J0)=y(S0(k):S1(k),J0:J1);%將數字寫入標準框jishu1=jishu1+1;endendtemp1=1;for i=1:1:(number-1)for r = 1:1:5for s= 1:1:5x1=c2(temp1).C(((r-1)*height+1):(r*height),((s-1)*weight+1):(s*weight));%獲取圖中各個數字u(r,s)=((weight*height)-sum(sum(x1(:,:))))/(height*weight);%隸屬度endendtemp1=temp1+1;b(B_number).B=u;%需識別圖片的隸屬度矩陣集bB_number=B_number+1;end%計算貼近度for i=1:1:B_number-1for j=1:1:10tiejd(i,j)=corr2(a(j).A,b(i).B);%用matlab自帶的corr2()函數計算貼近度endend%function [ bij_value ] = bij( a,b )%獲取待識別數字與各范例數字的貼近度中最大的,該貼近度的索引減一即為實際數字for i=1:1:(B_number-1)[~,index]=max(tiejd(i,:));%max輸出最大元素的索引bij_value(k,i)=index-1;endyanz(k,:)=bij_value(k,:);%yanz(k,:)=bij(tiejd,B_number-1);%用matlab自帶的corr2()函數識別出的各個數字%Out=sprintf('%d',yanz(k,:))%輸出 end Out = sprintf('%d%d%d',yanz(1,:),yanz(2,:),yanz(3,:)); % for k=1:1:(m-1) % out=sprintf('%d',yanz(k,:))%多次輸出 % end% function [ bij_value ] = bij( a,b ) % %獲取待識別數字與各范例數字的貼近度中最大的,該貼近度的索引減一即為實際數字 % for i=1:1:b % [~,index]=max(a(i,:)); % bij_value(1,i)=index-1; % % end % end

得到的結果圖:

我的分析圖:

?

總結

以上是生活随笔為你收集整理的人工智能-用matlab实现数字识别的全部內容,希望文章能夠幫你解決所遇到的問題。

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