Преобразование кода для получения изображения RGB вместо оттенков серого

У меня есть этот код, преобразующий изображение «рыбий глаз» в прямоугольную форму, но код может выполнять эту операцию только с изображением в градациях серого. Может ли кто-нибудь помочь преобразовать код для выполнения операции с изображением 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

РЕШЕНО

Входное изображение ‹- Ссылка на изображение

Вывод в оттенках серого, что бы я хотел в цвете ‹- Ссылка на изображение


person Kristian Moesgaard    schedule 23.04.2014    source источник


Ответы (1)


Попробуйте изменить эти три строки:

[Mr Nr] = size(imR); % size of rectangular image
...
imP = zeros(M, N);
...
imP = interp2(imR, xR, yR); %interpolate (imR, xR, yR);

... к этим:

[Mr Nr Pr] = size(imR); % size of rectangular image
...
imP = zeros(M, N, Pr);
...
for dim = 1:Pr
    imP(:,:,dim) = interp2(imR(:,:,dim), xR, yR); %interpolate (imR, xR, yR);
end
person Rafael Monteiro    schedule 23.04.2014
comment
Спасибо за ответ, к сожалению, не работает. при запуске кода я получаю следующее сообщение об ошибке: Несоответствие размеров присвоения индексов. Ошибка в ImToPolar (строка 40) imP (:,:, dim) = interp2 (imR (:,:, dim), xR, yR); % интерполировать (imR, xR, yR); - person Kristian Moesgaard; 24.04.2014
comment
Я обновил, теперь код выводит в цвете, но функция интерполяции, похоже, не выполняет свою работу. Изображение не такое, каким должно быть. - person Kristian Moesgaard; 24.04.2014
comment
Не могли бы вы предоставить образец цветного изображения с параметрами, которые вы использовали и работали с оттенками серого? - person Rafael Monteiro; 24.04.2014
comment
Конечно, я добавлю ссылку выше :) - person Kristian Moesgaard; 24.04.2014
comment
Я решил проблему (код выше теперь работает) спасибо за вашу помощь :) - person Kristian Moesgaard; 24.04.2014