Примерно на основе рисунка выше:
Мне нужно сделать такой массив:
array = [(image),(1,ll),(1,lh),(1,hl),(2,ll),(2,lh),(2,hl)]
Здесь изображение представляет собой пустой двумерный массив, а остальные элементы массива являются компонентами, полученными с помощью недецимируемого дискретного вейвлет-преобразования, которые также являются двумерными массивами.
Например,
(1,ll) is level 1 component,channel low-high
(2,hl) is level 2 component, channel high-low
С Python 2.7 это довольно просто.
udwt = np.asarray(pywt.swt2(image, 'haar',2))
array = [image,
udwt[0][0] , #1,ll
udwt[0][1][0], #1,lh
udwt[0][1][1], #1,hl
udwt[1][0] , #2,ll
udwt[1][1][0], #2,lh
udwt[1][1][1]] #2,hl
Однако я не могу сделать это в Matlab.
udwt = ndwt2(image,2,'haar');
Компоненты будут находиться в udwt.dec
(поле dec
структуры udwt
), из 1 to 7
.
Создание параллелей из кода Python:
Python Matlab
udwt[0][0] My question
udwt[0][1][0] udwt.dec{5}
udwt[0][1][1] udwt.dec{6}
udwt[1][0] udwt.dec{1}
udwt[1][1][0] udwt.dec{2}
udwt[1][1][1] udwt.dec{3}
(Python's function gives components from level 1 to level n.
Matlab's function gives components from level n to level 1.(reverse order))
Проблема в том, что я не получаю компонент низкий-низкий (компонент аппроксимации) 1-го уровня в Matlab (1,ll).
При использовании ndwt2
для двухуровневой декомпозиции это дает мне только одно приближение и 3 детали для каждого уровня (lh, hl, hh).
В то время как в Python pywt.swt2(), я получаю приближение для каждого уровня и 3 детали (lh, hl, hh) для каждого уровня.
так где мне найти это 1,ll в Matlab?
Я считаю, что udwt.dec{1}
равно 2, ll (минимум-минимум 2-го уровня вместо 1-го уровня на основе ответа здесь.
dec{ 1 } approximation level n
Должен ли я использовать какую-то другую функцию вместо ndwt2
?