Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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中的DCT图像滤波_Matlab_Image Processing_Dct - Fatal编程技术网

Matlab中的DCT图像滤波

Matlab中的DCT图像滤波,matlab,image-processing,dct,Matlab,Image Processing,Dct,我使用下面的函数来过滤图像。基本上,除了左上角的8x8元素外,它将DCT系数设置为0,这意味着它过滤掉所有高频部分,只留下低频部分 function I_out = em_DCT_filter(I_in,N) I_trim = double(I_in)-128; MYDCT=dctmtx(N); dct = @(block_struct)MYDCT*block_struct.data*MYDCT'; B=blockproc(I_trim,[N,N],dct); mask = zeros(N

我使用下面的函数来过滤图像。基本上,除了左上角的8x8元素外,它将DCT系数设置为0,这意味着它过滤掉所有高频部分,只留下低频部分

function I_out = em_DCT_filter(I_in,N)

I_trim = double(I_in)-128;

MYDCT=dctmtx(N);
dct = @(block_struct)MYDCT*block_struct.data*MYDCT';
B=blockproc(I_trim,[N,N],dct);

mask = zeros(N,N);
mask(1:N/4,1:N/4)= 1;

AnselmMask = @(block_struct)block_struct.data.*mask;
BMask=blockproc(B,[N N],AnselmMask);

InverseDct = @(block_struct)MYDCT'*block_struct.data*MYDCT;
BReversedl = blockproc(BMask,[N N],InverseDct);

I_out= uint8(BReversedl+128);
处理后的图像如下所示: 我需要该功能删除图像中的细节(例如毛衣上的图案,裤子上的阴影),这似乎工作正常。但是,该函数也会使图像变得非常模糊。如何删除细节,以及保持区域结构清晰?例如,毛衣/裤子区域的颜色将比以前更加均匀。

您基本上应用了“局部低通滤波器”。
难怪结果是“模糊”的,你删除了我们通常解释为细节和“锐度”的高频数据

您真正应该做的是删除高频细节,同时保持大边缘的圆滑。
一个好方法是使用各向异性扩散之类的方法。
通过使用优化的参数,您将能够获得您想要的外观。
一般来说,这些方法称为图像抽象

下面是一个用于高级各向异性扩散的优秀开源代码:


如果你能贡献自己的力量,那就太棒了。

你必须使用DCT吗?为什么你不能用空间过滤模糊图像呢?