用matlab实现一个计算机识别

用matlab实现一个计算机识别,第1张

用matlab实现一个计算机识别方法如下:

1、需要有字模库,图片黑白处理,导入matlab。

2、扫描图片矩阵,与字模库对比,吻合即成功,输出坐标和字即可。

3、MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。

4、MATLAB是matrix和laboratory两个词的组合,意为矩阵工厂,软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。

3.1: Signal_1.m

%matlab验证采定理

%该程序用于画原信号图形及其DFT图形

clear

t = -0.1:0.001:0.1%该参数用于画原信号图形

k = 0:200%域取

n = -999:0%频域取

f = sin(6*pi*t)%原函数, 由t取值f201值

s = exp(-j*2*pi/length(k))

skn = s.^(k'*n)%代公式

F = f*skn%原函数进行傅叶变换,

%处f1*201矩阵则skn必须满足201*X矩阵

%f1*X矩阵

subplot(2,1,1)

plot(t, f)%画采原函数序列图

title('原信号')

xlabel('间t(s)')

j = 1:length(F)

subplot(2,1,2)

plot(j,abs(F),'r')%画序列DFT图

title('原信号DFT图')

3.2: Signal_2.m

%该函数用于画离散采波形图由采信号重建信号图

%绘制离散采波形图

function Signal_Rebuilt(frequency)

%需要输入采频率frequency

T= 1/frequency%抽周期

gs = -0.1:T:0.1

fg = sin(6*pi*gs)

subplot(2,1,1)

stem(gs, fg)

title('采信号')

xlabel('间t(s)')

%绘制由采信号重建信号图

y = -0.1:0.001:0.1

ln = -0.1/T:0.1/T

M=ones(length(ln),1)*y-ln'*T*ones(1,length(y))

fs = fg*sinc(frequency*M)

subplot(2,1,2)

plot(y,fs,'r')

title('重建信号')

xlabel('间t(s)')

%绘制由采信号重建信号DFT图

k = 0:200

n = -999:0

s = exp(-j*2*pi/length(k))

skn = s.^(k'*n)

F = fs*skn

figure(3)

g = 1:length(F)

plot(g, abs(F))

车牌字符识别模板

篇一:车牌识别的matlab程序(程序,讲解,模板)

clc

clear close all

I=imread('chepai.jpg')

subplot(3,2,1)imshow(I), title('原始图像')

I_gray=rgb2gray(I)

subplot(3,2,2),imshow(I_gray),title('灰度图像')

%======================形态学预处理 ====================== I_edge=edge(I_gray,'sobel')

subplot(3,2,3),imshow(I_edge),title('边缘检测后图像')se=[111]

I_erode=imerode(I_edge,se)

subplot(3,2,4),imshow(I_erode),title('腐蚀后边缘图像')

se=strel('rectangle',[25,25])

I_close=imclose(I_erode,se)%图像闭合、填充图像 subplot(3,2,5),imshow(I_close),title('填充后图像')

I_final=bwareaopen(I_close,2000)%去除聚团灰度值小于2000的部分 subplot(3,2,6),imshow(I_final),title('形态滤波后图像')

%==========================车牌分割 ============================= I_new=zeros(size(I_final,1),size(I_final,2))location_of_1=[]

for i=1:size(I_final,1) %寻找二值图像中白的点的位置 for j=1:size(I_final,2)

if I_final(i,j)==1

newlocation=[i,j]

location_of_1=[location_of_1newlocation]end end end

mini=infmaxi=0

for i=1:size(location_of_1,1)

%寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置 temp=location_of_1(i,1)+location_of_1(i,2)if temp

if tempmaximaxi=tempb=i

end

end

first_point=location_of_1(a,:)%和最小的点为车牌的左上角 last_point=location_of_1(b,:)%和最大的点为车牌的右下角 x1=first_point(1)+4%坐标值修正 x2=last_point(1)-4y1=first_point(2)+4

y2=last_point(2)-4I_plate=I(x1:x2,y1:y2)

I_plate=OTSU(I_plate)%以OTSU算法对分割出的车牌进行自适应二值化处理

I_plate=bwareaopen(I_plate,50)

figure,imshow(I_plate),title('车牌提取') %画出最终车牌

%=========================字符分割============================ X=[]%用来存放水平分割线的横坐标 flag=0

for j=1:size(I_plate,2)

sum_y=sum(I_plate(:,j))

if logical(sum_y)~=flag%列和有变化时,记录下此列X=[X j]

flag=logical(sum_y)end end

figure

for n=1:7

char=I_plate(:,X(2*n-1):X(2*n)-1)%进行粗分割

for i=1:size(char,1)%这两个for循环对分割字符的上下进行裁剪if sum(char(i,:))~=0 top=ibreakend end

for i=1:size(char,1)

if sum(char(size(char,1)-i,:))~=0 bottom=size(char,1)-ibreakend en


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12021727.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存