最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

图像边界跟踪算法程序

来源:动视网 责编:小OO 时间:2025-09-28 21:40:18
文档

图像边界跟踪算法程序

Matlab程序.光栅扫描跟踪程序[m,n]=size(I);  %计算图像的大小imshow(I);R=I(1,1);     %图像第一个像素点的值I0=zeros(m+2,n+2)+R;  %图像周围增加一个与原图像第一个像素值相同的像素I0(2:(m+1),2:(n+1))=I;x0=0;y0=0;fsp=0;        %是否找到起始点fori=1:m   forj=1:n     if(I0(i,j)~=R)       x0=i;  %记录起始点的纵坐标i       y0=
推荐度:
导读Matlab程序.光栅扫描跟踪程序[m,n]=size(I);  %计算图像的大小imshow(I);R=I(1,1);     %图像第一个像素点的值I0=zeros(m+2,n+2)+R;  %图像周围增加一个与原图像第一个像素值相同的像素I0(2:(m+1),2:(n+1))=I;x0=0;y0=0;fsp=0;        %是否找到起始点fori=1:m   forj=1:n     if(I0(i,j)~=R)       x0=i;  %记录起始点的纵坐标i       y0=
Matlab程序.光栅扫描跟踪程序

[m,n]=size(I);    %计算图像的大小

imshow(I);

R=I(1,1);       %图像第一个像素点的值

I0=zeros(m+2,n+2)+R;   %图像周围增加一个与原图像第一个像素值相同的像素

I0(2:(m+1),2:(n+1))=I;

x0=0;y0=0;

fsp=0;          %是否找到起始点

for i=1:m

     for j=1:n

       if (I0(i,j)~=R)

         x0=i;   %记录起始点的纵坐标i

         y0=j;   %记录起始点的横坐标j

         fsp=1;

        break;

      end

    end

    if fsp==1

      break;

    end

end

row=x0;

col=y0;

A=[];         %存储边界点坐标的矩阵

B=zeros(m,n);  %边界跟踪的图像矩阵

ended=0;direction=4;    %由起始点的左边开始查找

while(ended==0)

found_next=0;

b=[row,col];

A=[A;b]; 

B(row,col)=255;     

     while(found_next==0)

        switch mod(direction,8)

            case 0

                if (I0(row, col+1)~=R)

                    row=row;             %记录当前坐标

                    col=col+1;

                    direction=5;           %下一点由方向5开始查找

                    found_next=1;         %找到边界点

                end;

            case 1

                if (I0(row-1, col+1)~=R)

                    row=row-1;           %记录当前坐标

                    col=col+1;

                 direction=6;              %下一点由方向6开始查找

                    found_next=1;         %找到边界点

                end; 

case 2

                if (I0(row-1, col)~=R)

                    row=row-1;           %记录当前坐标

                    col=col;

                    direction=7;           %下一点由方向7开始查找

                    found_next=1;         %找到边界点

                end; 

case 3

                if (I0(row-1, col-1)~=R)

                    row=row-1;           %记录当前坐标

                    col=col-1;

                    direction=0;           %下一点由方向0开始查找

                     found_next=1;        %找到边界点

                end;

case 4

                if (I0(row, col-1)~=R)

                    row=row;             %记录当前坐标

                    col=col-1;

                    direction=1;           %下一点由方向1开始查找

                    found_next=1;         %找到边界点

                end; 

case 5

                if (I0(row+1, col-1)~=R)

                    row=row+1;           %记录当前坐标

                    col=col-1;

                    direction=2;           %下一点由方向2开始查找

                    found_next=1;         %找到边界点

                end; 

case 6

                if (I0(row+1, col)~=R)

                    row=row+1;            %记录当前坐标

                    col=col;

                   direction=3;             %下一点由方向3开始查找

                    found_next=1;          %找到边界点

 end; 

case 7

                if (I0(row+1, col+1)~=R)

                    row=row+1;            %记录当前坐标

                    col=col+1;

                    direction=4;            %下一点由方向4开始查找

                    found_next=1;          %找到边界点

                end 

        end

 

        if (found_next==0)

 direction=direction+1;     %未找到边界点,继续在下一方向查找

end

        

    end

   

    if(and((x0==row),(y0==col)))

        ended=1;                    %是否与起始点相同

    end

 end

imshow(B);               %输出跟踪结果

%图像中心的查找

[k,l]=size(A);

sum_i=0;            %记录边界点纵坐标相加的和

sum_j=0;            %记录边界点横坐标相加的和

for  i=1:k

sum_i=sum_i+A(i,1);

sum_j=sum_j+A(i,2);

end

i_point=sum_i/k;         %图像中心的纵坐标

j_point=sum_j/k;         %图像中心的横坐标

文档

图像边界跟踪算法程序

Matlab程序.光栅扫描跟踪程序[m,n]=size(I);  %计算图像的大小imshow(I);R=I(1,1);     %图像第一个像素点的值I0=zeros(m+2,n+2)+R;  %图像周围增加一个与原图像第一个像素值相同的像素I0(2:(m+1),2:(n+1))=I;x0=0;y0=0;fsp=0;        %是否找到起始点fori=1:m   forj=1:n     if(I0(i,j)~=R)       x0=i;  %记录起始点的纵坐标i       y0=
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top