基於MATLAB公式識別


09:48:25

從一個無知角落里開始,蹣跚學步,一個未知到另一個未知,在跌跌撞撞中越走越快,越走越遠,最后宇宙也為之開源。對於探索者來說,最后他們的思想總是變得和自己的足跡一樣偉大。

 該項目目前可以實現

  • 圖像的預處理包括:灰度化,二值化(公式假設是良好的數學公式截屏圖片)
  • 圖像的最小外接矩求解;
  • 圖像的切割(part)

2021-05-02 20:24:30

  Cut_Imageju:實現最小外接矩

%%實現最小外接矩的函數Cut_Imageju
%column的意思是按列來排列,為行向量
%row的意思是按行來排列,為列向量
%0黑1白,字符以黑色為顯示
%尋找第一個字母長度,先分割出來全部字符,之后在對分割的這些部分進行寬度處理,要不處理不了;
function Img_out=Cut_Imageju(Img_in)
[m,n]=size(Img_in);% x是行數,y是列數
column=sum(Img_in);
%尋找左邊界
left=1;
num1=max(column);
for i = 1 :n
	if column(i)~=num1
		left=i;
		break
end
end
%尋找右邊界
right=n;
for i = n :-1:1
	if column(i)~=num1
		right=i;
		break
end
end
row=sum(Img_in,2);
num2=max(row);
%尋找上邊界
up=1;
for j = 1 :m
	if row(j)~=num2
		up=j;
		break
end
end
%尋找下邊界
down=m;
for j = m:-1:1
	if row(j)~=num2
		down=j;
		break
end
end
%裁剪圖像
Img_out=Img_in(up:down,left:right);
end
切割字符,並且獲得切割后的源量
Cut_Imageqie
%切分字符的函數Cut_Imageqie
%只按列切割,切成一列列
%column的意思是按列來排列,為行向量
%row的意思是按行來排列,為列向量
%0黑1白,字符以黑色為顯示
%尋找第一個字母長度,先分割出來全部字符,之后在對分割的這些部分進行寬度處理,要不處理不了;
%切分字符的函數Cut_Imageqie
%只按列切割,切成一列列
%%[Img_out1,Img_out2]分別代表切割下的圖像和切割后的原圖像
function [Img_out1,Img_out2]=Cut_Imageqie(Img_in)
[m,n]=size(Img_in);
column=sum(Img_in);
wide=0;
num1=max(column);
for i = 1:n
	if column(i)~=num1
		wide=wide+1;
	else
		newleft=i;
		break
end
end
Img_out1=imcrop(Img_in,[1,1,wide,m]);
Img_out2=Img_in(1:m,newleft:n);
end

  總函數

%%垂直投影切割函數2
%%將之前函數片段化函數化,實現從原圖像中分割字符
%%王 5/2 16點18分

%清屏
clc;
close all;
clear all;

%讀數
Img=imread('D:\data\matlabrecognizedata\rawpicture\pic2.png');%按實際路徑分析
figure,subplot(1,2,1),imshow(Img),title('原圖');

%灰度化和二值化
Img_Gray=rgb2gray(Img);
Img_Binary=imbinarize(Img_Gray,0.57);%采用0.57做閾值;

%求外接矩
Img_Cut=Cut_Imageju(Img_Binary);
subplot(1,2,2),imshow(Img_Cut),title('外接矩');

%分割圖像
[word1,Img_Cut]=Cut_Imageqie(Img_Cut);
figure,subplot(1,3,1),imshow(word1),title('初次切');
subplot(1,3,2),imshow(Img_Cut),title('切后的原圖形');
word1=Cut_Imageju(word1);
subplot(1,3,3),imshow(word1),title('后切');

  該項目還不能實現

  • 圖像的切割太過於依靠手動操作,並不能自動分析間隔,沒有可以使他自動停止的標准
  • 只局限於字母和單獨的式子,主要是因為采取了垂直投影分割法,識別的東西一定是獨體,但是像分數,根號或者其他字符的組合,就失敗了,后期會考慮連通域算法;
  • 不能實現識別;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM