%extracting objects提取目biao
im=imread('17.bmp');
I=rgb2gray(im);
im1=medfilt2(I,[2 2]); %Median filtering the image to remove noise%
BW=edge(im1,'sobel'); %finding edges
[imx,imy]=size(BW);
msk=[
1 1 1 ;
1 1 1 ;
1 1 1 ;
];
B=conv2(double(BW),double(msk)); %Smoothing image to reduce the number of connected components
L = bwlabel(B,8);% Calculating connected components
mx=max(max(L))
% There will be mx connected components.Here U can give a value between 1 and mx for L or in a loop you can extract all connected components
% If you are using the attached car image, by giving 17,18,19,22,27,28 to L you can extract the number plate completely.
[r,c] = find(L==17);
rc = [r c];
[sx sy]=size(rc);
n1=zeros(imx,imy);
for i=2:sx
x1=rc(i,1);
y1=rc(i,2);
n1(x1,y1)=255;
end % Storing the extracted image in an array
figure,imshow(im);
figure,imshow(im1);
figure,imshow(BW);
I2=BW;
originalmap=I2;
%calculate every pixel's IV(Interest value)
%divide image I by w*w
w=5;%divide to m*n
m=floor(size(I2,1)/w); %rows,round
n=floor(size(I2,2)/w); %columns
%get the coordinate of every centroid
c=ceil(w/2)+(0:n-1)*w; %x coordinate
r=ceil(w/2)+(0:m-1)*w; %y coordinate
%calculate every pixel's IV
step=floor(w/2);
for y_unit=1:m
for x_unit=1:n %计算横向相邻像素灰度差的平方和
v1=0;v2=0;v3=0;v4=0;
for i=-step:step-1 %计算横向相邻像素灰度差的平方和
v1=v1+(I2(r(y_unit),c(x_unit)+i)-I2(r(y_unit),c(x_unit)+i+1))^2; %计算右斜线方向相邻像素灰度差的平方和
v2=v2+(I2(r(y_unit)+i,c(x_unit)+i)-I2(r(y_unit)+i+1,c(x_unit)+i+1))^2; %计算纵向相邻像素灰度差的平方和
v3=v3+(I2(r(y_unit)+i,c(x_unit))-I2(r(y_unit)+i+1,c(x_unit)))^2; %计算左斜线方向相邻像素灰度差的平方和
v4=v4+(I2(r(y_unit)-i,c(x_unit)+i)-I2(r(y_unit)-i-1,c(x_unit)+i+1))^2;
end
%the min[v1,v2,v3,v4] is the IV of (c,r)
IV_cr(y_unit,x_unit)=min([v1,v2,v3,v4]);
end
end
%introduce a threshold 给定一个经验阈值。阈值的选取应以候选点包含所需要的特征点,而又不包含过多的非特征点为原则.
exper_thr=1;IV_cr(IV_cr<exper_thr)=NaN; %remove the value less then threshold
%选择候选点的极值点为特征点
%choose the size of window选择计算窗口大小
wf=9;
%divide the feature points对候选点进行分割,分割为mf*nf个区域
mf=floor(m/wf); %rows
nf=floor(n/wf); %columns
%gain the coordinate of the feature point得到特征点的坐标
xc=[];
yc=[];
for y_unit=1:mf
for x_unit=1:nf
%计算分割区域中的最大值
[C,I2]=max(IV_cr((y_unit-1)*wf+1:y_unit*wf,(x_unit-1)*wf+1:x_unit*wf));%得到行
[C1,im]=max(C);%得到列
IV_crch(y_unit,x_unit)=C1; %得到分割区域中的最大值
row=I2(im);
col=im;
crch_row(y_unit,x_unit)=(y_unit-1)*wf+row; %得到最大值在候选区域中的行数
crch_col(y_unit,x_unit)=(x_unit-1)*wf+col; %得到最大值在候选区域中的列数
yc=[yc,r((y_unit-1)*wf+row)];xc=[xc,c((x_unit-1)*wf+col)];
IV_cr((y_unit-1)*wf+1:y_unit*wf,(x_unit-1)*wf+1:x_unit*wf)=NaN; %先去掉所有的点
IV_cr((y_unit-1)*wf+row,(x_unit-1)*wf+col)=C1; %加上符合要求的候选点
end
end
%先给出原来的图像
figure(2)
imshow(originalmap)
title('灰度化original image')
xlabel('Horizontal')
ylabel('Vertical')
axis on
%show the feature points图像中显示特征点
figure(3)
imshow(originalmap)
hold on
plot(xc,yc,'R*')
axis on
title('feature points in the image')
xlabel('the columns of the image')
ylabel('the rows of the image')
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
车辆特征提取(小波轮廓检测和Moracev焦点检测).zip资源matlab opencv运动目标检测程序资料车辆特征提取(小波轮廓检测和Moracev焦点检测).zip资源matlab opencv运动目标检测程序资料车辆特征提取(小波轮廓检测和Moracev焦点检测).zip资源matlab opencv运动目标检测程序资料车辆特征提取(小波轮廓检测和Moracev焦点检测).zip资源matlab opencv运动目标检测程序资料 1.合个人学习技术做项目参考合个人学习技术做项目参考 2.适合学生做毕业设计项目参考适合学生做毕业设计项目参考 3.适合小团队开发项目技术参考适合小团队开发项目技术参考
资源推荐
资源详情
资源评论
收起资源包目录
车辆特征提取(小波轮廓检测和Moracev焦点检测).zip (3个子文件)
车辆特征提取(小波轮廓检测和Moracev焦点检测)
提取目标
tiqumubiao.m 4KB
tiqumubiao.asv 4KB
17.bmp 225KB
共 3 条
- 1
资源评论
- wangzheguilailu2024-03-26感谢大佬分享的资源给了我灵感,果断支持!感谢分享~
yxkfw
- 粉丝: 81
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功