Mam ten obraz
Chciałbym usunąć cień z obrazu. Wiem, że do usuwania cieni zastosowano wiele różnych metod, takich jak pewne operacje morfologiczne:
Stworzyłem tę maskę dla tego samego obrazu
Czy istnieją inne metody, które mogłem wypróbować przy użyciu tej maski, którą utworzyłem?
EDYCJA :
obraz wejściowy i maska o takim samym rozmiarze, jak wymagane:
EDYCJA 2: Wygenerowałem niezmienny obraz 1D, jednak nie jest on idealny
I = imread('shadow.jpg');
J = im2double(I);
R = J(:,:,1);
G = J(:,:,2);
B = J(:,:,3);
[len,wid] = size(R);
% Generation of 2-D Log Chromaticity Image.
for i = 1:len
for j = 1:wid
if ((R(i,j)*G(i,j)*B(i,j))~= 0)
c1(i,j) = R(i,j)/((R(i,j)*G(i,j)*B(i,j))^(1/3));
c2(i,j) = G(i,j)/((R(i,j)*G(i,j)*B(i,j))^(1/3));
c3(i,j) = B(i,j)/((R(i,j)*G(i,j)*B(i,j))^(1/3));
else
c1(i,j) = 1;
c2(i,j) = 1;
c3(i,j) = 1;
end
end
end
rho1 = mat2gray(log(c1));
rho2 = mat2gray(log(c2));
rho3 = mat2gray(log(c3));
X1 = mat2gray(rho1*1/(sqrt(2)) - rho2*1/(sqrt(2))); %(1/sqrt(2); -1/sqrt(2); 0)
X2 = mat2gray(rho1*1/(sqrt(6)) + rho2*1/(sqrt(6)) - rho3*2/(sqrt(6))); %(1/sqrt(6); 1/sqrt(6); -2/sqrt(6))
theta = 120;
InvariantImage = cos(theta*pi/180)*X1 + sin(theta*pi/180)*X2;
imagesc(InvariantImage); colormap(gray)
Nie możesz zrozumieć, co robię źle tutaj, proszę o pomoc?