Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中的wdenoise-这是2D还是3D过滤器?_Matlab - Fatal编程技术网

Matlab中的wdenoise-这是2D还是3D过滤器?

Matlab中的wdenoise-这是2D还是3D过滤器?,matlab,Matlab,我正在使用matlab中的函数wdenoise对存储为3D矩阵[m x n x time]的图像堆栈进行去噪。我正在运行wdenoise通过第三维度,时间。它的工作原理和预期的一样,但是当我从堆栈中查看单个图像时,它们看起来也在空间上平滑了。这是时间平滑的副产品,还是函数中存在在所有维度上去噪/平滑的功能 my_matrix = [400x400x60]; my_denoised_matrix=zeros(size(my_matrix)); for i = 1:length(my_matr

我正在使用matlab中的函数wdenoise对存储为3D矩阵[m x n x time]的图像堆栈进行去噪。我正在运行wdenoise通过第三维度,时间。它的工作原理和预期的一样,但是当我从堆栈中查看单个图像时,它们看起来也在空间上平滑了。这是时间平滑的副产品,还是函数中存在在所有维度上去噪/平滑的功能

my_matrix = [400x400x60];
my_denoised_matrix=zeros(size(my_matrix));



for i = 1:length(my_matrix)
    for j = 1:length(my_matrix)
        my_denoised_matrix(i,j,:) = wdenoise(squeeze(my_matrix(i,j,:)));
    end
end
同样,每个像素的时间轮廓是平滑的,这是我所期望的。但为什么最终结果看起来在空间上也是平滑的呢


感谢您的帮助。

它们似乎是作为时间平滑的副产品在空间上平滑的

my_去噪_矩阵(i,j,:)=wdenoise(挤压(my_矩阵(i,j,:)))仅在第三维中过滤(时间平滑)

通过使用复制60次的同一图像,可以验证没有空间过滤:

%Build "my_matrix" [400x400x60];
%Same image is duplicated 60 times.
I = imresize(im2double(imread('cameraman.tif')), [400, 400]);
my_matrix = repmat(I, 1, 1, 60);

my_denoised_matrix=zeros(size(my_matrix));

for i = 1:length(my_matrix)
    for j = 1:length(my_matrix)
        my_denoised_matrix(i,j,:) = wdenoise(squeeze(my_matrix(i,j,:)));
    end
end

%Check the difference between I and my_denoised_matrix:  
D = I - my_denoised_matrix;
max_abs_diff = max(abs(D(:)));
disp(['max_abs_diff = ', num2str(max_abs_diff)]);

它们似乎是作为时间平滑的副产品在空间上平滑的

my_去噪_矩阵(i,j,:)=wdenoise(挤压(my_矩阵(i,j,:)))仅在第三维中过滤(时间平滑)

通过使用复制60次的同一图像,可以验证没有空间过滤:

%Build "my_matrix" [400x400x60];
%Same image is duplicated 60 times.
I = imresize(im2double(imread('cameraman.tif')), [400, 400]);
my_matrix = repmat(I, 1, 1, 60);

my_denoised_matrix=zeros(size(my_matrix));

for i = 1:length(my_matrix)
    for j = 1:length(my_matrix)
        my_denoised_matrix(i,j,:) = wdenoise(squeeze(my_matrix(i,j,:)));
    end
end

%Check the difference between I and my_denoised_matrix:  
D = I - my_denoised_matrix;
max_abs_diff = max(abs(D(:)));
disp(['max_abs_diff = ', num2str(max_abs_diff)]);

如果您想知道滤波器的作用,请将其应用于合成信号/图像,从而知道在不同情况下预期的输出。通常,
t=0(50,50,50);t(25,25,25)=1
是线性滤波器的良好测试用例(根据需要调整大小)。与卷积核相同的滤波结果。您将能够看到它是否仅沿三维延伸或沿其他维度延伸。如果您想知道过滤器的作用,请将其应用于合成信号/图像,从而知道在不同情况下预期的输出。通常,
t=0(50,50,50);t(25,25,25)=1
是线性滤波器的良好测试用例(根据需要调整大小)。与卷积核相同的滤波结果。您将能够看到它是否仅沿三维延伸,还是也沿其他维度延伸。