⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 derespolar.m

📁 hopfield neural network for binary image recognition
💻 M
字号:
%  DERESPOLAR - Desresolves image in polar coordinates.%%  Performs a deresolution operation on an image using Polar Coordinates%%  Usage:   deres = derespolar(im, nr, na, xc, yc)%              where: nr = resolution in the radial direction%                     na = resolution in the angular direction%                     xc = column of polar origin (optional)%                     yc = row of polar origin (optional)%% If xc and yc are omitted the polar origin defaults to the centre of the image% Copyright (c) 1999 Peter Kovesi% School of Computer Science & Software Engineering% The University of Western Australia% http://www.csse.uwa.edu.au/% % Permission is hereby granted, free of charge, to any person obtaining a copy% of this software and associated documentation files (the "Software"), to deal% in the Software without restriction, subject to the following conditions:% % The above copyright notice and this permission notice shall be included in % all copies or substantial portions of the Software.%% The Software is provided "as is", without warranty of any kind.% May 1999% This code is horribly inefficient and needs a rewrite...function deres = derespolar(im,nr,na,xc,yc)  [rows,cols] = size(im);  if nargin == 3    xc = round(cols/2);    yc = round(rows/2);  end    if ndims(im) == 3  % Assume colour image    deres = uint8(zeros(size(im)));    deres(:,:,1) = iderespolar(im(:,:,1),nr,na,xc,yc);    deres(:,:,2) = iderespolar(im(:,:,2),nr,na,xc,yc);       deres(:,:,3) = iderespolar(im(:,:,3),nr,na,xc,yc);         else    deres = iderespolar(im,nr,na,xc,yc);  end  % Internal function that does the work    function deres = iderespolar(im,nr,na,xc,yc)        [rows,cols] = size(im);        %x = ones(rows,1) * (-cols/2 : (cols/2 - 1));      %y = (-rows/2 : (rows/2 - 1))' * ones(1,cols);        [x,y] = meshgrid(-xc:cols-xc-1, -yc:rows-yc-1);        radius = sqrt(x.^2 + y.^2);       % Matrix values contain radius from centre.    theta = atan2(y,x);               % Matrix values contain polar angle.        dr = max(max(radius))/nr;    da = max(max(theta+pi))/na;        rp = round(radius/dr)*dr;    ra = round(theta/da)*da;        rowp = yc + rp.*sin(ra);    colp = xc + rp.*cos(ra);        rowp = round(rowp);    colp = round(colp);    rowp = max(rowp,1); rowp = min(rowp,rows);    colp = max(colp,1); colp = min(colp,cols);        for row = 1:rows      for col = 1:cols	deres(row,col) = im(rowp(row,col), colp(row,col));      end    end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -