?? derespolar.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 + -