如何用SURF特征在Matlab中实现印刷体汉字图像配准?

2026-05-16 13:411阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1690个文字,预计阅读时间需要7分钟。

如何用SURF特征在Matlab中实现印刷体汉字图像配准?

1+内容介绍+图像配置是指标识同一目标的两个(或多)图像在空间位置上的对齐。图像配置技术过程称为图像匹配或图像相关,是数字图像处理和机器视觉中比较基础且核心的技术分支。

1 内容介绍

图像配准是指同一目标的两幅(或者是多幅)图像在空间位置上的对齐.图像配准技术过程称为图像匹配或者图像相关,是数字图像处理和机器视觉中比较基础且核心的技术分支,也是立体视觉,图像融合,动态视频检测等应用的基础.在医学影像,遥感领域,军事导航,地理信息系统,目标识别,航空航天技术,虚拟现实及人工智能等领域已经得到广泛应用.随着应用技术的复杂化,对图像配准算法的实时性,精确性,适应性,高效性都提出了更高的要求.基于灰度的配准算法容易受到光照和图像灰度信息影响且复杂度较高,效率低;当存在非线性变换的时候,基于变换域的方法受到了限制;而图像的不变特征能够反映图像的本质属性,而且能够在图像发生一定的伸缩,旋转,光照,视角变化的情况下保持稳定性,这对于人类对图像识别的研究有着里程碑式的意义.

2 仿真代码

%求汉字图像外围特征

function m_peripheryft=CrossPeiphery(I)

[m,n]=size(I);

count=1;

m_peripheryft=zeros(1,64);


%搜索方向为从左向右,水平。

for k=1:8

%图像分块后,在每块的每行一次外围和二次外围特征

sum1=zeros(1,m/8);

sum2=zeros(1,m/8);

%每块的一次外围和二次外围特征

p1=0;

p2=0;

for i=(k-1)*(m/8)+1:k*(m/8)

for j=1:n

if I(i,j)==0

sum1(i-(k-1)*(m/8))=sum1(i-(k-1)*(m/8))+1;

else

while(j<n+1&I(i,j)==1)

j=j+1;

end

while(j<n+1&I(i,j)==0)

j=j+1;

sum2(i-(k-1)*(m/8))=sum2(i-(k-1)*(m/8))+1;

end

if j>n-1

sum2(i-(k-1)*(m/8))=0;

end

如何用SURF特征在Matlab中实现印刷体汉字图像配准?

break;

end

end

end

for i=1:m/8

p1=p1+sum1(i);

end

for i=1:m/8

p2=p2+sum2(i);

end

m_peripheryft(count)=p1/(m*n);

count=count+1;

m_peripheryft(count)=p2/(m*n);

count=count+1;

end

%搜索方向是从上向下,竖直。

for k=1:8

%图像分块后,在每块的每行一次外围和二次外围特征

sum1=zeros(1,n/8);

sum2=zeros(1,n/8);

%每块的一次外围和二次外围特征

p1=0;

p2=0;

for j=(k-1)*(n/8)+1:k*(n/8)

for i=1:m

if I(i,j)==0

sum1(j-(k-1)*(n/8))=sum1(j-(k-1)*(n/8))+1;

else

while(i<m+1&I(i,j)==1)

i=i+1;

end

while(i<m+1&I(i,j)==0)

i=i+1;

sum2(j-(k-1)*(n/8))=sum2(j-(k-1)*(n/8))+1;

end

if i>m-1

sum2(j-(k-1)*(n/8))=0;

end

break;

end

end

end

for i=1:n/8

p1=p1+sum1(i);

end

for i=1:n/8

p2=p2+sum2(i);

end

m_peripheryft(count)=p1/(m*n);

count=count+1;

m_peripheryft(count)=p2/(m*n);

count=count+1;

end

%搜索方向为从右向左,水平。

for k=1:8

%图像分块后,在每块的每行一次外围和二次外围特征

sum1=zeros(1,m/8);

sum2=zeros(1,m/8);

%每块的一次外围和二次外围特征

p1=0;

p2=0;

for i=(k-1)*(m/8)+1:k*(m/8)

for j=n:-1:1

if I(i,j)==0

sum1(i-(k-1)*(m/8))=sum1(i-(k-1)*(m/8))+1;

else

while(j>0&I(i,j)==1)

j=j-1;

end

while(j>0&I(i,j)==0)

j=j-1;

sum2(i-(k-1)*(m/8))=sum2(i-(k-1)*(m/8))+1;

end

if j<2

sum2(i-(k-1)*(m/8))=0;

end

break;

end

end

end

for i=1:m/8

p1=p1+sum1(i);

end

for i=1:m/8

p2=p2+sum2(i);

end

m_peripheryft(count)=p1/(m*n);

count=count+1;

m_peripheryft(count)=p2/(m*n);

count=count+1;

end

%搜索方向是从下向上,竖直。

for k=1:8

%图像分块后,在每块的每行一次外围和二次外围特征

sum1=zeros(1,n/8);

sum2=zeros(1,n/8);

%每块的一次外围和二次外围特征

p1=0;

p2=0;

for j=(k-1)*(n/8)+1:k*(n/8)

for i=m:-1:1

if I(i,j)==0

sum1(j-(k-1)*(n/8))=sum1(j-(k-1)*(n/8))+1;

else

while(i>0&I(i,j)==1)

i=i-1;

end

while(i>0&I(i,j)==0)

i=i-1;

sum2(j-(k-1)*(n/8))=sum2(j-(k-1)*(n/8))+1;

end

if i<2

sum2(j-(k-1)*(n/8))=0;

end

break;

end

end

end

for i=1:n/8

p1=p1+sum1(i);

end

for i=1:n/8

p2=p2+sum2(i);

end

m_peripheryft(count)=p1/(m*n);

count=count+1;

m_peripheryft(count)=p2/(m*n);

count=count+1;

end

m_peripheryft=m_peripheryft./norm(m_peripheryft);

end

3 运行结果

4 参考文献

[1]葛盼盼, 陈强. 基于SURF特征提取的遥感图像自动配准[J]. 计算机系统应用, 23(3).

[2]王飞越. 基于SURF特征提取的图像配准算法研究[D]. 哈尔滨理工大学.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


本文共计1690个文字,预计阅读时间需要7分钟。

如何用SURF特征在Matlab中实现印刷体汉字图像配准?

1+内容介绍+图像配置是指标识同一目标的两个(或多)图像在空间位置上的对齐。图像配置技术过程称为图像匹配或图像相关,是数字图像处理和机器视觉中比较基础且核心的技术分支。

1 内容介绍

图像配准是指同一目标的两幅(或者是多幅)图像在空间位置上的对齐.图像配准技术过程称为图像匹配或者图像相关,是数字图像处理和机器视觉中比较基础且核心的技术分支,也是立体视觉,图像融合,动态视频检测等应用的基础.在医学影像,遥感领域,军事导航,地理信息系统,目标识别,航空航天技术,虚拟现实及人工智能等领域已经得到广泛应用.随着应用技术的复杂化,对图像配准算法的实时性,精确性,适应性,高效性都提出了更高的要求.基于灰度的配准算法容易受到光照和图像灰度信息影响且复杂度较高,效率低;当存在非线性变换的时候,基于变换域的方法受到了限制;而图像的不变特征能够反映图像的本质属性,而且能够在图像发生一定的伸缩,旋转,光照,视角变化的情况下保持稳定性,这对于人类对图像识别的研究有着里程碑式的意义.

2 仿真代码

%求汉字图像外围特征

function m_peripheryft=CrossPeiphery(I)

[m,n]=size(I);

count=1;

m_peripheryft=zeros(1,64);


%搜索方向为从左向右,水平。

for k=1:8

%图像分块后,在每块的每行一次外围和二次外围特征

sum1=zeros(1,m/8);

sum2=zeros(1,m/8);

%每块的一次外围和二次外围特征

p1=0;

p2=0;

for i=(k-1)*(m/8)+1:k*(m/8)

for j=1:n

if I(i,j)==0

sum1(i-(k-1)*(m/8))=sum1(i-(k-1)*(m/8))+1;

else

while(j<n+1&I(i,j)==1)

j=j+1;

end

while(j<n+1&I(i,j)==0)

j=j+1;

sum2(i-(k-1)*(m/8))=sum2(i-(k-1)*(m/8))+1;

end

if j>n-1

sum2(i-(k-1)*(m/8))=0;

end

如何用SURF特征在Matlab中实现印刷体汉字图像配准?

break;

end

end

end

for i=1:m/8

p1=p1+sum1(i);

end

for i=1:m/8

p2=p2+sum2(i);

end

m_peripheryft(count)=p1/(m*n);

count=count+1;

m_peripheryft(count)=p2/(m*n);

count=count+1;

end

%搜索方向是从上向下,竖直。

for k=1:8

%图像分块后,在每块的每行一次外围和二次外围特征

sum1=zeros(1,n/8);

sum2=zeros(1,n/8);

%每块的一次外围和二次外围特征

p1=0;

p2=0;

for j=(k-1)*(n/8)+1:k*(n/8)

for i=1:m

if I(i,j)==0

sum1(j-(k-1)*(n/8))=sum1(j-(k-1)*(n/8))+1;

else

while(i<m+1&I(i,j)==1)

i=i+1;

end

while(i<m+1&I(i,j)==0)

i=i+1;

sum2(j-(k-1)*(n/8))=sum2(j-(k-1)*(n/8))+1;

end

if i>m-1

sum2(j-(k-1)*(n/8))=0;

end

break;

end

end

end

for i=1:n/8

p1=p1+sum1(i);

end

for i=1:n/8

p2=p2+sum2(i);

end

m_peripheryft(count)=p1/(m*n);

count=count+1;

m_peripheryft(count)=p2/(m*n);

count=count+1;

end

%搜索方向为从右向左,水平。

for k=1:8

%图像分块后,在每块的每行一次外围和二次外围特征

sum1=zeros(1,m/8);

sum2=zeros(1,m/8);

%每块的一次外围和二次外围特征

p1=0;

p2=0;

for i=(k-1)*(m/8)+1:k*(m/8)

for j=n:-1:1

if I(i,j)==0

sum1(i-(k-1)*(m/8))=sum1(i-(k-1)*(m/8))+1;

else

while(j>0&I(i,j)==1)

j=j-1;

end

while(j>0&I(i,j)==0)

j=j-1;

sum2(i-(k-1)*(m/8))=sum2(i-(k-1)*(m/8))+1;

end

if j<2

sum2(i-(k-1)*(m/8))=0;

end

break;

end

end

end

for i=1:m/8

p1=p1+sum1(i);

end

for i=1:m/8

p2=p2+sum2(i);

end

m_peripheryft(count)=p1/(m*n);

count=count+1;

m_peripheryft(count)=p2/(m*n);

count=count+1;

end

%搜索方向是从下向上,竖直。

for k=1:8

%图像分块后,在每块的每行一次外围和二次外围特征

sum1=zeros(1,n/8);

sum2=zeros(1,n/8);

%每块的一次外围和二次外围特征

p1=0;

p2=0;

for j=(k-1)*(n/8)+1:k*(n/8)

for i=m:-1:1

if I(i,j)==0

sum1(j-(k-1)*(n/8))=sum1(j-(k-1)*(n/8))+1;

else

while(i>0&I(i,j)==1)

i=i-1;

end

while(i>0&I(i,j)==0)

i=i-1;

sum2(j-(k-1)*(n/8))=sum2(j-(k-1)*(n/8))+1;

end

if i<2

sum2(j-(k-1)*(n/8))=0;

end

break;

end

end

end

for i=1:n/8

p1=p1+sum1(i);

end

for i=1:n/8

p2=p2+sum2(i);

end

m_peripheryft(count)=p1/(m*n);

count=count+1;

m_peripheryft(count)=p2/(m*n);

count=count+1;

end

m_peripheryft=m_peripheryft./norm(m_peripheryft);

end

3 运行结果

4 参考文献

[1]葛盼盼, 陈强. 基于SURF特征提取的遥感图像自动配准[J]. 计算机系统应用, 23(3).

[2]王飞越. 基于SURF特征提取的图像配准算法研究[D]. 哈尔滨理工大学.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。