Как восстановить изображение из другого изображения - PullRequest
1 голос
/ 19 октября 2019

Если у меня есть полутоновое квадратное изображение (1), и я поворачиваю его копию на 90 градусов. Я создаю новое изображение (2), где пиксели представляют собой сумму исходных и повернутых изображений. У меня вопрос, если у меня есть только изображение 2, как я могу восстановить исходное изображение 1?

1 Ответ

2 голосов
/ 21 октября 2019

Краткий ответ: Вы не можете восстановить исходное изображение.

Доказательство:
Предположим, 2x2 изображение:

I = [a b]
    [c d]

J = I + rot90(I) = [ a + b, b + d] = [E F
                   [ a + c, c + d]    G H]

Теперь давайте попробуем решить систему линейных уравнений:

E = a + b + 0 + 0
F = 0 + b + 0 + d
G = a + 0 + c + 0
H = 0 + 0 + c + d

A = [a, b, 0, 0     u = [a   v = [E
     0, b, 0, d          b        F
     a, 0, c, 0          c        G   
     0, 0, c, d]         d]       H]

v = A*u

Для того, чтобы извлечь u, матрицуA должно быть обратимым.
, но det(A) = 0, так что возможны бесконечные возможные решения.


Я попробовал итеративный подход.
Я реализовал его в MATLAB.

Я немного поиграл с этим и обнаружил, что применение двустороннего фильтра и умеренное повышение резкости улучшает восстановленный результат.
Вероятно, существуют лучшие эвристики, о которых я не могу думать.

Вот реализация MATLAB:

I = im2double(imread('cameraman.tif'))/2; %Read input sample image and convert to double
J = I + rot90(I); %Sum of I and rotated I.

%Initial guess.
I = ones(size(J))*0.5;

h_fig = figure;
ax = axes(h_fig);
h = imshow(I/2);

alpha = 0.1;
beta = 0.01;

%100000 iterations.
for i = 1:100000
    K = I + rot90(I);
    E = J - K; %E is the error matrix.
    I = I + alpha*E;

    if mod(i, 100) == 0
        if (i < 100000*0.9)
            I = imsharpen(imbilatfilt(I), 'Amount', 0.1);
        end
        h.CData = I*2;
        ax.Title.String = num2str(i);
        pause(0.01);
        beta = beta * 0.99;        
    end
end

Сумма I и rot90 (I):
enter image description here

Исходное изображение:
enter image description here

Восстановленное изображение:
enter image description here

...