%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')
yxkfw
- 粉丝: 82
- 资源: 2万+
最新资源
- 机械设计物流双托盘提升机sw18可编辑全套设计资料100%好用.zip
- 基于Java的学院教学工作量统计系统源码(java毕业设计完整源码).zip
- 三菱plc搭配四轴雅马哈机械手在线检测收料案例程序 (包涵CAD电气图纸,plc程序,人机界面,机器人程序,BOM表)程序中应用到CClink通讯,232串口通讯,数据采集伺服定位控制
- LibUsbDotNet C#
- 机械设计消毒袋封口机x_t全套设计资料100%好用.zip
- 证件照处理的代码演示以及说明
- 基于java的招聘求职系统源码(java毕业设计完整源码).zip
- 基于Java的校园二手商品交易系统设计与实现源码(java毕业设计完整源码).zip
- 基于JAVA的校园二手物品交易系统的设计与实现源码(java毕业设计完整源码+LW).zip
- 学生考试表现影响因素数据集.zip
- 基于Java的校园消费点评系统源码(java毕业设计完整源码).zip
- 图像加解密的代码展示以及说明
- 基于Java的校园自助洗衣服务管理系统的设计与实现源码(java毕业设计完整源码).zip
- 基于Python的图像加解密技术实现
- 线性自抗扰(LADRC)的stm32f1程序,实现用编码器反馈控制直流电机调速,控制器采用加了TD的LADRC,控制效果良好,.h和.c分开,代码清晰有注释 有调试说明
- 【Endnote 文献输出样式Style Chinese std GBT7714 下载和使用】
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈