blockproc
предполагает, что вы выводите фактическое изображение. Вы не можете использовать это для нескольких выходов. Если вы действительно хотите, чтобы это работало с blockproc
, вам, к сожалению, придется вызывать blockproc
четыре раза, каждый раз извлекая различный набор коэффициентов для направлений. Также обратите внимание, что 2D DWT работает только для изображений в градациях серого , поэтому вам необходимо преобразовать в оттенки серого, прежде чем выполнять какую-либо обработку. Выбранное вами изображение груши - это цветное / RGB-изображение.
Я хотел бы сослаться на этот пост о том, как выбрать N
-й выход, учитывая функцию ввода: Как получить второе возвращаемое значение из функции без использования временных переменных? . Вам нужно сохранить этот код в файл с именем nth_output.m
, который позволяет программно извлекать все выходные переменные из функции и выбирать только один выход.
function value = nth_output(N,fcn,varargin)
[value{1:N}] = fcn(varargin{:});
value = value{N};
end
Простое исключение дополнительных выходных аргументов при вызове функции дает вам только первый выход, что и делает ваш код blockproc
. После того, как вы это сделаете, вам нужно создать 4 анонимные функции для захвата каждого вывода из dwt2
и запустить blockproc
4 раза. Убедитесь, что вы указали, какой вывод вы хотите использовать для каждой из анонимных функций, поэтому от 1
до 4
и вы просто предоставляете дескриптор функции, которую хотите запустить, в дополнение к входным аргументам, которые входят в функцию.
Поэтому попробуйте что-то вроде этого:
I = rgb2gray(imread('pears.png'));
fun1 = @(block_struct) nth_output(1, @dwt2, block_struct.data,'dmey');
fun2 = @(block_struct) nth_output(2, @dwt2, block_struct.data,'dmey');
fun3 = @(block_struct) nth_output(3, @dwt2, block_struct.data,'dmey');
fun4 = @(block_struct) nth_output(4, @dwt2, block_struct.data,'dmey');
I = rgb2gray(I);
cA = blockproc(I,[64 64],fun1);
cH = blockproc(I,[64 64],fun2);
cV = blockproc(I,[64 64],fun3);
cD = blockproc(I,[64 64],fun4);
cA
, cH
, cV
и cD
содержат коэффициенты DWT, необходимые для каждого набора направлений.