edge robert matlab,哪位熟悉matlab的大神路过瞄一眼哈

cxfx(believe truth believe me)

UID240430

帖子100

精华积分1755

蛋蛋币1755 枚

威望0

BT积分0

阅读权限60

性别男

在线时间125 小时

注册时间2013-3-27

faa0c8478be28e46dcea6319091c31db.gif

4b6850e80d531f7eec13291e843c47c5.gif 3aa79252662c1f0f0a3792cdd40ee3d9.gif 6364d8b3889a0ad76c746a18dc0d4ba1.gif

faa0c8478be28e46dcea6319091c31db.gif

鸵鸟蛋

fc5f18224a31ffe84e79a676401d1838.gif

fcf42229013c5e9d2020610c04122c02.gif

主楼

大中

小发表于 2013-5-13 21:30 只看该作者

哪位熟悉matlab的大神路过瞄一眼哈

求大神指点迷津那!谁来帮着看一下这个程序那,这个程序感觉存在bug,意图是通过blue像素点确定出想要的区域,问题在于这段程序好像跳过了色彩像素区程序段,怎么解决那???基于MATLAB的车牌号码识别程序如下:

I=imread('car.jpg');

figure(1),imshow(I);title('原图');

I1=rgb2gray(I);

figure(2),subplot(1,2,1),imshow(I1);title('灰度图');

figure(2),subplot(1,2,2),imhist(I1);title('灰度图直方图');

I2=edge(I1,'robert',0.08,'both');

figure(3),imshow(I2);title('robert算子边缘检测')

se=[1;1;1];

I3=imerode(I2,se);

figure(4),imshow(I3);title('腐蚀后图像');

se=strel('rectangle',[40,40]);

I4=imclose(I3,se);

figure(5),imshow(I4);title('平滑图像的轮廓');

I5=bwareaopen(I4,2000);

figure(6),imshow(I5);title('从对象中移除小对象');

[y,x,z]=size(I5);

myI=double(I5);

%begin横向扫描

tic

Blue_y=zeros(y,1);

for i=1:y

for j=1:x

if(myI(i,j,1)==1)

%如果myI(i,j,1)即myI图像中坐标为(i,j)的点为蓝色

%则Blue_y的相应行的元素white_y(i,1)值加1

Blue_y(i,1)= Blue_y(i,1)+1;%蓝色像素点统计

end

end

end

[temp MaxY]=max(Blue_y);%temp为向量white_y的元素中的最大值,MaxY为该值的索引(

在向量中的位置)

PY1=MaxY;

while ((Blue_y(PY1,1)>=120)&&(PY1>1))

PY1=PY1-1;

end

PY2=MaxY;

while ((Blue_y(PY2,1)>=40)&&(PY2

PY2=PY2+1;

end

IY=I(PY1:Y2,:,;)

%IY为原始图像I中截取的纵坐标在PY1:PY2之间的部分

%end横向扫描

%begin纵向扫描

Blue_x=zeros(1,x);%进一步确定x方向的车牌区域

for j=1:x

for i=PY1:Y2

if(myI(i,j,1)==1)

Blue_x(1,j)= Blue_x(1,j)+1;

end

end

end

PX1=1;

while ((Blue_x(1,PX1)<3)&&(PX1

PX1=PX1+1;

end

PX2=x;

while ((Blue_x(1,PX2)<3)&&(PX2>pX1))

PX2=PX2-1;

end

%end纵向扫描

PX1=PX1-2;%对车牌区域的校正

PX2=PX2+2;

dw=I(pY1:pY2,:,;)

t=toc;

figure(7),subplot(1,2,1),imshow(IY),title('行方向合理区域');

figure(7),subplot(1,2,2),imshow(dw),title('定位剪切后的彩色车牌图像')

imwrite(dw,'dw.jpg');

[filename,filepath]=uigetfile('dw.jpg','输入一个定位裁剪后的车牌图像');

jpg=strcat(filepath,filename);

a=imread('dw.jpg');

b=rgb2gray(a);

imwrite(b,'1.车牌灰度图像.jpg');

figure(8);subplot(3,2,1),imshow(b),title('1.车牌灰度图像')

g_max=double(max(max(b)));

g_min=double(min(min(b)));

T=round(g_max-(g_max-g_min)/3); % T 为二值化的阈值

[m,n]=size(b);

d=(double(b)>=T);  % d:二值图像

imwrite(d,'2.车牌二值图像.jpg');

figure(8);subplot(3,2,2),imshow(d),title('2.车牌二值图像')

figure(8),subplot(3,2,3),imshow(d),title('3.均值滤波前')

% 滤波

h=fspecial('average',3);

d=im2bw(round(filter2(h,d)));

imwrite(d,'4.均值滤波后.jpg');

figure(8),subplot(3,2,4),imshow(d),title('4.均值滤波后')

% 某些图像进行操作

% 膨胀或腐蚀

% se=strel('square',3); % 使用一个3X3的正方形结果元素对象对创建的图像膨胀

% 'line'/'diamond'/'ball'...

se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵

[m,n]=size(d);

if bwarea(d)/m/n>=0.365

d=imerode(d,se);

elseif bwarea(d)/m/n<=0.235

d=imdilate(d,se);

end

imwrite(d,'5.膨胀或腐蚀处理后.jpg');

figure(8),subplot(3,2,5),imshow(d),title('5.膨胀或腐蚀处理后')

% 寻找连续有文字的块,若长度大于某阈值,则认为该块有两个字符组成,需要分割

d=qiege(d);

[m,n]=size(d);

figure,subplot(2,1,1),imshow(d),title(n)

k1=1;k2=1;s=sum(d);j=1;

while j~=n

while s(j)==0

j=j+1;

end

k1=j;

while s(j)~=0 && j<=n-1

j=j+1;

end

k2=j-1;

if k2-k1>=round(n/6.5)

[val,num]=min(sum(d(:,[k1+5:k2-5])));

d(:,k1+num+5)=0;  % 分割

end

end

% 再切割

d=qiege(d);

% 切割出 7 个字符

y1=10;y2=0.25;flag=0;word1=[];

while flag==0

[m,n]=size(d);

left=1;wide=0;

while sum(d(:,wide+1))~=0

wide=wide+1;

end

if wide

d(:,[1:wide])=0;

d=qiege(d);

else

temp=qiege(imcrop(d,[1 1 wide m]));

[m,n]=size(temp);

all=sum(sum(temp));

two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],));

if two_thirds/all>y2

flag=1;word1=temp;   % WORD 1

end

d(:,[1:wide])=0;d=qiege(d);

end

end

% 分割出第二个字符

[word2,d]=getword(d);

% 分割出第三个字符

[word3,d]=getword(d);

% 分割出第四个字符

[word4,d]=getword(d);

% 分割出第五个字符

[word5,d]=getword(d);

% 分割出第六个字符

[word6,d]=getword(d);

% 分割出第七个字符

[word7,d]=getword(d);

figure(9),imshow(word1),title('1');

figure(10),imshow(word2),title('2');

figure(11),imshow(word3),title('3');

figure(12),imshow(word4),title('4');

figure(13),imshow(word5),title('5');

figure(14),imshow(word6),title('6');

figure(15),imshow(word7),title('7');

[m,n]=size(word1);

% 商用系统程序中归一化大小为 40*20,此处演示

word1=imresize(word1,[40 20]);

word2=imresize(word2,[40 20]);

word3=imresize(word3,[40 20]);

word4=imresize(word4,[40 20]);

word5=imresize(word5,[40 20]);

word6=imresize(word6,[40 20]);

word7=imresize(word7,[40 20]);

figure(16),

subplot(3,7,8),imshow(word1),title('1');

subplot(3,7,9),imshow(word2),title('2');

subplot(3,7,10),imshow(word3),title('3');

subplot(3,7,11),imshow(word4),title('4');

subplot(3,7,12),imshow(word5),title('5');

subplot(3,7,13),imshow(word6),title('6');

subplot(3,7,14),imshow(word7),title('7');

imwrite(word1,'1.jpg');

imwrite(word2,'2.jpg');

imwrite(word3,'3.jpg');

imwrite(word4,'4.jpg');

imwrite(word5,'5.jpg');

imwrite(word6,'6.jpg');

imwrite(word7,'7.jpg');

liccode=char(['0':'9' 'A':'Z' '鲁苏豫陕']);  %建立自动识别字符代码表

SubBw2=zeros(40,20);

l=1;

for I=1:7

ii=int2str(I);

t=imread([ii,'.jpg']);

SegBw2=imresize(t,[40 20],'nearest');

if l==1                 %第一位汉字识别

kmin=37;

kmax=40;

elseif l==2             %第二位 A~Z 字母识别

kmin=11;

kmax=36;

else l>=3               %第三位以后是字母或数字识别

kmin=1;

kmax=36;

end

for k2=kmin:kmax

fname=strcat('字符模板\',liccode(k2),'.jpg');

SamBw2 = imread(fname);

for  i=1:40

for j=1:20

SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);

end

end

% 以上相当于两幅图相减得到第三幅图

Dmax=0;

for k1=1:40

for l1=1:20

if  ( SubBw2(k1,l1) > 0 | SubBw2(k1,l1) <0 )

Dmax=Dmax+1;

end

end

end

Error(k2)=Dmax;

end

Error1=Error(kmin:kmax);

MinError=min(Error1);

findc=find(Error1==MinError);

l=l+1;

end

figure(17),subplot(3,1,2),imshow(dw),title ('车牌号码: 鲁N·X8158');

%子程序:(getword子程序)

function [word,result]=getword(d)

word=[];flag=0;y1=8;y2=0.5;

while flag==0

[m,n]=size(d);

wide=0;

while sum(d(:,wide+1))~=0 && wide<=n-2

wide=wide+1;

end

temp=qiege(imcrop(d,[1 1 wide m]));

[m1,n1]=size(temp);

if widey2

d(:,[1:wide])=0;

if sum(sum(d))~=0

d=qiege(d);  % 切割出最小范围

else word=[];flag=1;

end

else

word=qiege(imcrop(d,[1 1 wide m]));

d(:,[1:wide])=0;

if sum(sum(d))~=0;

d=qiege(d);flag=1;

else d=[];

end

end

end

result=d;

% (qiege子程序)

function e=qiege(d)

[m,n]=size(d);

top=1;bottom=m;left=1;right=n;   % init

while sum(d(top,==0 && top<=m

top=top+1;

end

while sum(d(bottom,==0 && bottom>1

bottom=bottom-1;

end

while sum(d(:,left))==0 && left

left=left+1;

end

while sum(d(:,right))==0 && right>=1

right=right-1;

end

dd=right-left;

hh=bottom-top;

e=imcrop(d,[left top dd hh]);

[本帖最后由 cxfx 于 2013-5-13 21:55 编辑]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

朋友来网易面试,挂了~

阅读本文大概需要8分钟。最近推荐一个朋友来网易面试&#xff0c;这哥们在小厂工作6年&#xff0c;研发经验非常丰富&#xff0c;但他却挂在了技术终面。事后和他约了个饭&#xff0c;深聊了一次发现他的技术成长路径还是有点问题。软件开发行业需要经验&#xff0c;需要时间来…

php 图片 3d旋转图片,html5实现图片的3D旋转效果

我们先来看一下实现效果&#xff1a;(学习视频分享&#xff1a;html视频教程)H5旋转3D相册&#xff0c;鼠标放置暂停&#xff0c;图片灰度级为0&#xff0c;有放大效果。该实例运用H5和CSS3动画效果&#xff0c;未用javascript。提高了本人对CSS3 新属性的了解及掌握。完整代码…

初级运维工程师面试题总结

该面试题结合了上海龙旗&#xff0c;土豆网&#xff0c;上海激动网络&#xff0c;风之云&#xff0c;广典集团&#xff0c;旅行者传媒等等&#xff0c;有些面试题还在进一步完善之中&#xff0c;希望给想步入运维行业的朋友们一点点帮助&#xff0c;加油!1)Linux启动大致过程&a…

数据这么多,且看R语言怎么处理!

随着科技的不断进步&#xff0c;数据处理量的不断增大&#xff0c;对数据进行处理、分析、统计建模、数据挖掘以及可视化的重要性日渐突出。如果说有一门简单易学、通俗易懂并且集上述功能为一体的编程语言让科研人员从中解脱出来&#xff0c;R语言当仁不让。作为一种统计分析软…

MYSQL数据库表大小计算,计算mysql数据库数据表的大小,不精确,只是大略的数据...

SHOW TABLE STATUS dbname返回数组&#xff1a;Name: xxx (表名)Engine: MyISAM (表引擎)Version: 10 (版本)Row_format: Dynamic (行格式)Rows: (表内总行数)Avg_row_length: (平均每行大小&#xff0c;这里是4.7K)Data_length: (该表总大小&#xff0c;单位字节)Max_data_len…

乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时

Dapr是一个由微软主导的云原生开源项目&#xff0c;国内云计算巨头阿里云也积极参与其中&#xff0c;2019年10月首次发布&#xff0c;到今年2月正式发布V1.0版本。在不到一年半的时间内&#xff0c;github star数达到了1.2万&#xff0c;超过同期的kubernetes、istio、knative等…

催人泪下!一个程序员的悲惨故事

全世界有3.14 % 的人已经关注了数据与算法之美编辑&#xff1a;大数据二狗如果你喜欢这篇文章&#xff0c;就把它发给朋友看吧~精品课程推荐&#xff1a;选购数学科普正版读物严选“数学思维好物”送给孩子的益智礼物 | 办公室神器算法工程师成长阅读 | 居家高科技理工…

php分目录存放session,phpsession实现多级目录存放实现代码,phpsession_PHP教程

php session实现多级目录存放实现代码&#xff0c;phpsession当一个目录下有很多文件时&#xff0c;服务器的处理性能会变低&#xff0c;php默认的session仅仅存放在/tmp目录下&#xff0c;未进行分级&#xff0c;当有一定的访问量时&#xff0c;就存在性能问题了。首先&#x…

erlang 编译之 to_core

感谢 坚强2002 同学的推荐 http://www.it.uu.se/research/group/hipe/cerl/ main.erl-module(main). -export([start/0]).start() ->ok. c(main, to_core). 会产生中间代码文件 main.core 打开如下 main.coremodule main [module_info/0,module_info/1,start/0]attributes […

C# Action用法

Action是无返回值的泛型委托可以使用 Action<T1, T2, T3, T4> 委托以参数形式传递方法&#xff0c;而不用显式声明自定义的委托。封装的方法必须与此委托定义的方法签名相对应。也就是说&#xff0c;封装的方法必须具有四个均通过值传递给它的参数&#xff0c;并且不能返…

python让函数抛出异常,是否有任何对象可以使str()函数在python中抛出错误或异常?...

我有一个函数,要求输入是一个字符串.我知道我可以断言或检查输入类型,但我想尽可能地处理它.我有以下代码来处理它.但我想知道是否有任何情况,这一行可以抛出我需要处理的异常.def foo(any_input):clean_input str(any_input) # will this throw any exception or error?proc…

双十一,单身狗除了买买买,还能做什么?

躲得过618&#xff0c;躲得过1024终究躲不过双十一小天相信&#xff0c;肯定有很多的小伙伴正磨刀霍霍对准自己的手这个节日小天陪你们买买买&#xff01;11月6~13日超级数学建模携手网易云课堂“超级充电节”为大家带来多重惊喜&#xff0c;福利享不停&#xff01;趁此机会赶紧…

将 SharePoint 开发与其他形式的开发进行比较

从三个视点检查 SharePoint 开发很有用&#xff1a; 为 .NET Framework 构建可扩展的应用程序 构建数据库应用程序 构建传统的富客户端应用程序将 SharePoint 应用程序与可扩展的 .NET Web 应用程序进行比较 您可以从开发人员的角度检查 SharePoint 开发&#xff0c;该开发人员…

Visual Studio 2022这些重大更新,影响每一位.NET开发者!

难得五一长假&#xff0c;蹲家里盘点了一下这2年.NET的发展&#xff0c;可谓日新月异&#xff0c;重现辉煌&#xff0c;各种重磅更新接踵而至&#xff1a;1 .NET Core3.1各种最受欢迎、性能排行等榜单霸榜&#xff0c;3个月增加100w的关注者&#xff1b;2 .NET5让.NET Framewor…

父与子一起学python3,父与子的编程之旅 与小卡特一起学Python 第3版(全彩印刷)...

章 出发吧 11.1 安装Python 11.2 从IDLE启动Python 21.3 来点指令吧 31.4 与Python交互 51.5 该编程了 71.6 运行你的个程序 91.7 如果出现问题 101.8 你的第二个程序 12第2章 记住内存和变量 152.1 输入、处理、输出 152.2 名字 172.3 名字里是什么 212.4 数字和字符串 222.5 …

影响计算机算法世界的十位大师

全世界有3.14 % 的人已经关注了数据与算法之美1、伟大的智者——Don E.Knuth&#xff0c;中文名&#xff1a;高德纳(1938-)算法和程序设计技术的先驱者。Oh,God!一些国外网站这样评价他。一般说来&#xff0c;不知道此人的程序员是不可原谅的。其经典著作《计算机程序设计艺术》…

【翻译】WPF中的数据绑定表达式

有很多文章讨论绑定的概念&#xff0c;并讲解如何使用StaticResources和DynamicResources绑定属性。这些概念使用WPF提供的数据绑定表达式。在本文中&#xff0c;让我们研究WPF提供的不同类型的数据绑定表达式。介绍数据绑定是一种强大的技术&#xff0c;它允许数据在UI元素和业…

java网络编程 个人心得

TCP协议是一个有连接可靠地协议。TCP编程的核心思路 开发服务器端ServerSocket ssnew ServerSocket(9000)ss.accept(); publicclassTcpServer {publicstaticvoidmain(String[] args) {try{ServerSocket ssnewServerSocket (9000);//创建SocketServer对象,并绑定端口Socket sss…

php对表格的处理,JavaScript_js处理表格对table进行修饰,js处理表格 1、行颜色间隔显示 - phpStudy...

js处理表格对table进行修饰js处理表格1、行颜色间隔显示css样式&#xff1a;两个选择器.one{background-color:#33ffcc;}.two{backgound-color:#ffff66;}function trcolor()//控制间隔行颜色显示不同{var tabNode document.getElementsByTagName("table")[0];//获取…

12个关键词,告诉你到底什么是机器学习

全世界只有3.14 % 的人关注了数据与算法之美编者按&#xff1a;随着人工智能(AI)技术对各行各业有越来越深入的影响&#xff0c;我们也更多地在新闻或报告中听到“机器学习”、“深度学习”、“增强学习”、“神经网络”等词汇&#xff0c;对于非专业人士来说略为玄幻。这篇文章…