matlab中没有图像,没有报错 没有图像

该博客介绍了如何在MATLAB中进行图像处理,包括读取图像、转换为灰度、边缘检测、形态学操作以及车牌的行和列方向像素点灰度值累计和的分析,最终实现车牌图像的定位。通过Sobel算子检测边缘,使用腐蚀和填充等操作预处理,然后找到车牌的起始和终止位置,完成车牌图像的提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clc

close all;

clear all;

I=imread('car.jpg'); %读取图像

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

I1=rgb2gray(I);% 转化为灰度图像

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

I2=edge(I1,'Sobel');% 采用robert算子进行边缘检测

subplot(3,2,3),imshow(I2),title(' 边缘检测后图像 ');

se=[1;1;1]; %线型结构元素

I3=imerode(I2,se); %腐蚀图像

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

se=strel('rectangle',[25,25]); %矩形结构元素

I4=imclose(I3,se);% 图像聚类、填充图像

subplot(3,2,5),imshow(I4),title(' 填充后图像 ');

I5=bwareaopen(I4,2000);%去除聚团灰度值小于 2000的部分

subplot(3,2,6),imshow(I5),title(' 形态滤波后图像 ');

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

I6=double(I5);

Y1=zeros(y,1);

for i=1:y

for j=1:x

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

Y1(i,1)= Y1(i,1)+1;

end

end

end

[temp MaxY]=max(Y1);

figure();

subplot(3,2,1),plot(0:y-1,Y1),title(' 行方向像素点灰度值累计和'),xlabel('行值 '),ylabel('像素 ');

%求的车牌的行起始位置和终止位置

PY1=MaxY;

while ((Y1(PY1,1)>=50)&&(PY1>1))

PY1=PY1-1;

end

PY2=MaxY;

while ((Y1(PY2,1)>=50)&&(PY2

PY2=PY2+1;

end

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

X1=zeros(1,x);

for j=1:x

for i=PY1:PY2

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

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

end

end

end

subplot(3,2,2),plot(0:x-1,X1),title(' 列方向像素点灰度值累计和'),xlabel('列值 '),ylabel('像数 ');

PX1=1;

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

PX1=PX1+1;

end

PX2=x;

while ((X1(1,PX2)<3)&&(PX2>PX1))

PX2=PX2-1;

end

PX1=PX1-1;

PX2=PX2+1;

%分割出车牌图像 %

dw=I(PY1:PY2,PX1:PX2,:);

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

%车牌字符分割,确定车牌位置后下一步的任务就是进行字符切分分离出车牌号码的全部字符图像 。

function y = isrgb(I)

if isrgb(I)

I1 = rgb2gray(I); %将RGB图像转化为灰度图像

else I1=I ;

end

g_max=double(max(max(I1)));

g_min=double(min(min(I1)));

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

[m,n]=size(I1);% d: 二值图像

%h=graythresh(I1);

I1=im2bw(I1,T/256);

subplot(3,2,4);

imshow(I1),title(' 二值化车牌图像 ');

end

### Matlab 中三维图像报错解决方案 在处理三维图像时,通常会遇到一些常见的错误。以下是针对这些可能的错误及其解决方法: #### 数据维度不匹配 如果 `plot3` 函数中的数据被用于 `surf` 函数,则需要注意两者的输入要求不同。`plot3` 需要三个向量作为输入来表示点集的空间坐标,而 `surf` 则需要网格化的 X、Y 和 Z 坐标矩阵[^1]。 为了将二维数据转换为适用于 `surf` 的形式,可以使用 `meshgrid` 创建合适的网格化矩阵: ```matlab [X, Y] = meshgrid(x, y); Z = some_function(X, Y); % 替换为实际定义的高度函数 surf(X, Y, Z); ``` #### 图像显示大小调整引发的警告 当尝试展示图像并设置其全屏显示时,可能会触发某些警告消息。可以通过修改图形窗口属性或捕获警告信息的方式消除干扰[^4]: ```matlab try figure; set(gcf,'Units','normalized','OuterPosition',[0 0 1 1]); catch ME disp('Warning suppressed:'); disp(ME.message); end ``` #### 并行计算优化性能 对于大规模三维数据可视化操作可能导致程序运行缓慢的情况,考虑利用并行计算工具箱提升效率。该工具支持通过多线程或多设备协同工作减少运算时间,并能有效管理内存资源消耗[^2]。 例如,在绘制复杂表面图之前启用parfor循环预处理大数据集合: ```matlab parpool; % 启动默认数量的工作进程 parfor i=1:length(dataChunks) processedData{i} = preprocessFunction(dataChunks{i}); end delete(gcp); % 清理已完成的任务池 ``` #### 软件版本兼容性问题 确保所使用的MATLAB版本与依赖库(如Cartographer项目提供的开源组件)之间不存在冲突也很重要[^3]。有时特定功能仅存在于较新的发行版里或者旧版存在已知缺陷需升级修复。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值