魚眼画像を取り、それを各 RGB チャネルの長方形の画像に変換するコードがあります。出力画像が長方形ではなく正方形であるという事実に問題があります。(これは、画像が歪んでおり、水平方向に圧縮されていることを意味します。) 出力マトリックスをより適切な形式に変更しようとしましたが、成功しませんでした。これに加えて、コードが機能するには、入力画像が 500x500 のような正方形でなければならないことも発見しました。この問題を解決する方法はありますか? これはコードです:
このコードは、mathworks での Prakash Manandhar の「Polar To/From Rectangular Transform of Images」ファイル交換に触発されています。
編集。コードが動作するようになりました。
function imP = FISHCOLOR2(imR)
rMin=0.1;
rMax=1;
[Mr, Nr, Dr] = size(imR); % size of rectangular image
xRc = (Mr+1)/2; % co-ordinates of the center of the image
yRc = (Nr+1)/2;
sx = (Mr-1)/2; % scale factors
sy = (Nr-1)/2;
reduced_dim = min(size(imR,1),size(imR,2));
imR = imresize(imR,[reduced_dim reduced_dim]);
M=size(imR,1);N=size(imR,2);
dr = (rMax - rMin)/(M-1);
dth = 2*pi/N;
r=rMin:dr:rMin+(M-1)*dr;
th=(0:dth:(N-1)*dth)';
[r,th]=meshgrid(r,th);
x=r.*cos(th);
y=r.*sin(th);
xR = x*sx + xRc;
yR = y*sy + yRc;
for k=1:Dr % colors
imP(:,:,k) = interp2(imR(:,:,k), xR, yR); % add k channel
end
imP = imresize(imP,[size(imP,1), size(imP,2)/3]);
imP = imrotate(imP,270);
解決した
入力画像 ←画像リンク
出力画像 ←画像リンク