У меня есть этот код, преобразующий изображение «рыбий глаз» в прямоугольную форму, но код может выполнять эту операцию только с изображением в градациях серого. Может ли кто-нибудь помочь преобразовать код для выполнения операции с изображением RGB. Код выглядит следующим образом:
изменить: я обновил код, чтобы он содержал функцию, которая выполняет интерполяцию в каждом цветовом канале. Но это, похоже, искажает выходное изображение. См. Изображения ниже
function imP = FISHCOLOR (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;
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;
imP =zeros(M, N); % initialize the final matrix
for k=1:3 % colors
T = imR(:,:,k);
Ichannel = interp2(T,xR,yR);
imP(:,:,k)= Ichannel; % add k channel
end
РЕШЕНО
Входное изображение ‹- Ссылка на изображение
Вывод в оттенках серого, что бы я хотел в цвете ‹- Ссылка на изображение