Я хочу размыть изображение. Изображение 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;
На всякий случай, заметили ли вы, что «панель обработки изображений» включает в себя встроенную функцию затухания? – obchardon