2017-02-14 4 views
0

Я хочу размыть изображение. Изображение 1100x1100, а цветовая карта - 256x3. Чтобы размыть изображение, можно было бы выполнить умножение матрицы в соответствии со следующим уравнением: Y = XH ', где X - исходное изображение. Чтобы размыть изображение, можно было бы сделать X = Y/H '. Следовательно, я выполнил следующий код.Удаление изображения через матричные операции в MATLAB

L = 1100; 
N = 850; 
c = [ones(1,N)/N zeros(1,L-N)]; 
r = [1/N zeros(1,L-1)]; 
H = toeplitz(c,r); 
pic1 = pic/H'; //pic is defined as the original image: 1100 x 1100 
image(dePic); 

Однако, когда я запускаю этот код, я просто получаю карту тепла, а не исходное изображение. Где я иду не так? Я неправильно делаю математику в MATLAB? N=850 - оптимальное значение для N. Это я подтвердил. Но только для проверки работоспособности я попытался изменить N и не имел большой удачи.

Я также пробовал следующий код. Но он просто преобразовал карту тепла в черно-белое и не оказал большого влияния.

L = 1100; 
N = 850; 
c = [ones(1,N)/N zeros(1,L-N)]; 
r = [1/N zeros(1,L-1)]; 
H = toeplitz(c,r); 
pic1 = pic/H'; 
colormap(map); //map is 256x3 
image(dePic); 
axis image; 
+0

На всякий случай, заметили ли вы, что «панель обработки изображений» включает в себя встроенную функцию затухания? – obchardon

ответ

0

Я полный дурак. когда я вызываю image(), я перехожу к неправильному аргументу. Вот обновленный код, который прекрасно работает.

L = 1100; 
N = 850; 
c = [ones(1,N) zeros(1,L-N)]; 
r = [1 zeros(1,L-1)]; 
H = toeplitz(c,r); 
H = H/N; 
pic1 = pic*inv(H'); 
colormap(map); 
image(pic1); 
axis image; 

Это работает.

Смежные вопросы