0
我使用下面的函数来过滤图像。基本上它将DCT的系数设置为0,除了左上角的8x8元素,这意味着它滤除所有高频部分并仅离开低频部分。Matlab中的DCT滤波器图像
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吗?为什么不能用空间滤波来模糊图像? – rayryeng 2014-11-07 07:13:37