MatLab Daubechies Фильтр цветного изображения с нуля - без использования предустановленных функций

Это мой первый пост. Я надеюсь, что кто-то может помочь мне начать. Так что я работаю над обработкой изображений для проекта класса. Мы легко начали с создания функции преобразования Хаара с нуля, которая была довольно простой, а затем применили ее к предустановленным изображениям, таким как cameraman.tif. Тем не менее, этот образец изображения находится в градациях серого и квадратной матрицы.

Теперь мы сделали большой скачок, и мы должны применить фильтр к любому прямоугольному цветному изображению. Я понимаю, что если я imread(picture) он создаст матричную матрицу с тремя значениями, представляющими красный, зеленый и синий (RGB). Я также понимаю, что, в принципе, я должен использовать for цикл, чтобы пройти через каждый канал цвета. Тем не менее, это подводит меня к вопросу о том, как создать его для разных каналов и собрать изображение обратно.

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

Окончательный код должен выглядеть следующим образом: 1) Спросите пользователя, сколько итераций желательно:

pic =   input('What picture would you like? Type "1" for an example or a URL  ');

2) Спросите пользователя о пороге

t   =   input('Threshold?');

3) Спросите пользователя, сколько итераций (1-3)

i   =   input('How many iterations do you want? Choose 1-3.  ');

В качестве примера изображения я выбрал прямоугольное растровое изображение, потому что оно еще не было сжато, и в качестве простого идентификатора использовалось "1":

if pic ==1;
   A = imread ('http://readingeagle.com/BlogUploads/11/Birds%20in.bmp');
else A = imread(pic) ;
end

%[m,n]=Matrix dimensions, c=channels
[m,n,c]=size (A) ; 

%plot original
imshow (A);  

Теперь нам нужно выполнить вейвлет-преобразование Добчехи с тем количеством итераций, которое указал пользователь, устанавливая значения за пределами абсолютного значения порога равным нулю. Перед реконструкцией изображения.

Я надеюсь, что дал достаточно информации, пожалуйста, поправьте меня, если я уже ошибся (надеюсь, что нет). Мой код начинает ломаться каждый раз, когда я реализую циклы и пытаюсь обратиться к каналам. Просто для справки приведем преобразование Хаара, которое работало для исходного изображения cameraman.tif:

%HWTM - Haar Wavelet Transform Matrix

function W = HWTM(N)

while mod(N,2) ~= 0;
    N = N-1;
end 

W=zeros(N);
for k=1:N/2
    W(k,2*k)=1/2;
    W(k,2*k-1)=1/2;
    W(N/2+k,2*k)=1/2;
    W(N/2+k,2*k-1)=-1/2;
end
end

Бесконечно благодарен!

0 ответов

Другие вопросы по тегам