车牌定位方法——matlab

此车牌定位法采用的是:边缘检测+形态学运算的方法。
缺点:此方法对于车辆牌照周围灰度变化剧烈的情况容易定位错误。

function dw=location(i)
%车牌定位方法
i1=rgb2gray(i);%灰度化
i2=edge(i1,'robert');%边缘检测
imshow(i2);
se=[1;1;1];%列腐蚀算子,腐蚀算子的形状很重要
i3=imerode(i2,se);%此腐蚀可将非车牌区域的噪声信息腐蚀掉
figure,imshow(i3);
se1=strel('rectangle',[25,25]);%方形闭环算子
i4=imclose(i3,se1);%闭环运算 需要选择大的算子
figure,imshow(i4);
i5=bwareaopen(i4,1500);%将连通域面积小于1500像素的区域都删除,此方法是为了把除车牌以外的区域都删除
figure,imshow(i5);
[y,x,z]=size(i5);
i6=double(i5);
Y1=zeros(y,1);
for ii=1:y%统计每一行的像素值为1的个数
    for jj=1:x
        if(i6(ii,jj,1)==1)
            Y1(ii,1)=Y1(ii,1)+1;
        end
    end
end
[temp,MaxY]=max(Y1);%temp为Y1的最大值,MaxY为其所在的行数
figure,plot(1:y,Y1);
PY1=MaxY;
while((Y1(PY1,1)>=50)&&(PY1>1))%求车牌上边界
    PY1=PY1-1;
end
PY2=MaxY;
while((Y1(PY2,1)>=50)&&(PY2<y))%求车牌下边界
    PY2=PY2+1;
end

X1=zeros(1,x);
for jj=1:x%统计每一列的像素值为1的个数,只统计车牌上下边界之间的像素数
    for ii=PY1:PY2
        if(i6(ii,jj,1)==1)
            X1(1,jj)=X1(1,jj)+1;
        end
    end
end
figure,plot(1:x,X1);

PX1=1;
while((X1(1,PX1)<15)&&(PX1<x))%求车牌左边界
    PX1=PX1+1;
end
PX2=x;
while((X1(1,PX2)<15)&&(PX2>PX1))%求车牌右边界
    PX2=PX2-1;
end
PX1=PX1-1;
PX2=PX2+1;
dw=i(PY1:PY2,PX1:PX2,:);%求得车牌区域
figure,imshow(dw);
  • 18
    点赞
  • 143
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
熵权法是一种客观赋值方法,可以用来确定指标的权重。在使用过程中,熵权法根据各指标的变异程度,利用信息熵计算出各指标的熵权,再通过熵权对各指标的权重进行修正,从而得到较为客观的指标权重。具体实现过程可以使用Matlab来进行计算。 首先,需要构造评价矩阵Ymn,然后对数据进行处理。对于越小越优的指标,可以使用越小越优型处理,即将指标的最大值减去该指标的原始值。对于某点最优型指标,可以根据给定的最优型数值,计算指标的最优型得分。接下来,可以使用数据标准化方法(如mapminmax函数)对数据进行标准化,将数据转换到指定的区间。然后,可以计算每个指标的信息熵,根据信息熵计算各指标的权重。最后,可以根据计算得到的权重,计算指标的得分。 在Matlab中,可以使用如下代码实现熵权法的计算: ```matlab clc; clear; % 读取数据 data = xlsread('D:\桌面\shangquan.xlsx'); data = data(:,3:end); % 只取指标数据 % 指标正向化处理 data1 = data; % 越小越优型处理 index = [3,4]; % 越小越优指标位置 for i = 1:length(index) data1(:,index(i)) = max(data(:,index(i))) - data(:,index(i)); end % 某点最优型指标处理 index = [5]; a = 90; % 最优型数值 for i = 1:length(index) data1(:,index(i)) = 1 - abs(data(:,index(i)) - a) / max(abs(data(:,index(i)) - a)); end % 数据标准化 data2 = mapminmax(data1',0.002,1); % 标准化到0.002-1区间 data2 = data2'; % 计算信息熵 [m,n = size(data2); p = zeros(m,n); for j = 1:n p(:,j) = data2(:,j) / sum(data2(:,j)); end for j = 1:n E(j) = -1/log(m) * sum(p(:,j) .* log(p(:,j))); end % 计算权重 w = (1 - E) / sum(1 - E); % 计算得分 s = data2 * w'; Score = 100 * s / max(s); disp('12个银行分别得分为:') disp(Score) ``` 这段代码可以计算出给定数据集中各指标的权重和得分,其中包括了评价矩阵的构造、指标处理、标准化、信息熵计算、权重计算和得分计算等步骤。最后输出每个银行的得分。 请注意,以上代码仅为示例,具体实现过程可能会根据实际需求和数据格式的不同而有所变化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【综合评价分析】熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列](https://blog.csdn.net/m0_52474147/article/details/127176733)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [熵权法 —— matlab](https://blog.csdn.net/qq_25990967/article/details/122588120)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值