霍夫变换Matlab-如何显示



我从书Feature Extraction & Image Processing中得到了一个代码。由于我完全是Matlab的初学者,我不知道如何运行这些代码来查看结果。它们完整吗?

第一个:线的Hough变换

%Polar Hough Transform for Lines
function HTPLine(inputimage)
%image size
[rows,columns]=size(inputimage);
%accumulator
rmax=round(sqrt(rows^2+columns^2));
acc=zeros(rmax,180);
%image
for x=1:columns
  for y=1:rows
    if(inputimage(y,x)==0)
      for m=1:180
        r=round(x*cos((m*pi)/180)+y*sin(m*pi)/180);
        if(r0) acc(r,m)=acc(r,m)+1; end
      end
    end
  end
end

第二个:圆的Hough变换

%Hough Transform for Circles
function HTCircle(inputimage,r)
%image size
[rows,columns]=size(inputimage);
%accumulator
acc=zeros(rows,columns);
%image
for x=1:columns
  for y=1:rows
    if(inputimage(y,x)==0)
      for ang=0:360
        t=(ang*pi)/180;
        x0=round(x-r*cos(t));
        y0=round(y-r*sin(t));
        if(x00 & y00)
          acc(y0,x0)=acc(y0,x0)+1;
        end
      end
    end
  end
end

第三个:Elipses 的Hough变换

%Hough Transform for Ellipses
function HTEllipse(inputimage,a,b)
%image size
[rows,columns]=size(inputimage);
%accumulator
acc=zeros(rows,columns);
%image
for x=1:columns
  for y=1:rows
    if(inputimage(y,x)==0)
      for ang=0:360
        t=(ang*pi)/180;
        x0=round(x-a*cos(t));
        y0=round(y-b*sin(t));
        if(x00 & y0< rows & y0>0)
          acc(y0,x0)=acc(y0,x0)+1;
        end
      end
    end
  end
end

我有图像(png),我需要运行这些程序。但我似乎无法管理它。我创建了新的脚本,粘贴代码,保存它,然后在主窗口中运行函数名,将路径作为参数发送到图像。它什么都不做,没有消息等等。

您的函数不返回任何值,这意味着您必须向这些函数添加一个返回参数(在hough trafo的情况下,您希望返回累加器数组acc),如手册中所述(http://www.mathworks.de/de/help/matlab/ref/function.html),将函数标题更改为:

 function acc = HTPLine(inputimage)

然后从命令行(或另一个脚本)这样调用它:

IMG = imread('some_image.jpg');
% e.g. convert to grayscale:
IMG = rgb2gray(IMG);
acc = HTPLine(IMG);

然后,您仍然需要在累加器中找到最大值(或几个最大值,取决于您想要拟合的线的数量),并通过图中的plot自行显示拟合的线(椭圆/圆)…

EDIT:查看您的代码,我不知道变量r0应该是什么!?它会给你一个错误提示,因为它在任何地方都没有定义。

为什么在代码中使用if(inputimage(y,x)==0)?当前点的像素不必是black,就可以计算出单个像素的hough变换(只需想象一个带有白线的灰色图像->你的代码不会做任何事情,因为图像不会包含任何黑色像素)。所以这就是你需要重新思考的。

如果你愿意,你也可以使用MATLAB的内置hough变换:http://www.mathworks.de/de/help/images/ref/hough.html//http://www.mathworks.de/de/help/images/ref/houghpeaks.html

最新更新