使用Curvelet进行边缘增强

时间:2018-09-18 15:34:25

标签: matlab image-processing wavelet

我正在尝试使用Curvelet变换来增强视网膜血管。根据论文“使用Curvelet变换和核模糊c均值提取血管并去除视盘”:对于边缘增强,近似子带即对应于图像的粗略近似设置为零,其余子带乘以某个放大系数“α”。因此,背景被抑制,而详细的边缘被突出显示。计算出逆曲波变换并将其叠加在原始图像上。

这是我的MATLAB代码,与本文中所需的图像不同。谁能帮我为什么我没有得到正确的结果?

感谢您的帮助。

PS:对于Curvelet变换,我使用了Donoho在www.curvelet.org中实现的工具箱

%read the image and extract green channel
X = imread('C:\Users\02_test.tif');
X=double(X(:,:,2));
[m,n]=size(X);
%take curvelet transform
C = fdct_wrapping(X,1,1);
Ct=C;
% coarse approximation is set to zero
for r=1:length(C{end})
    C{end}{r}=zeros(size(C{end}{r}));
end
% multiply other subbands by amplification factor
for w=1:(length(C)-1)
   for s=1:length(C{w})
      C{w}{s}=2*C{w}{s};
   end
end

%inverse curvelet transform
Y = ifdct_wrapping(C,1,m,n);  %Y is changed img
YY = ifdct_wrapping(Ct,1,m,n);  %YY is original

%superimpose 
h=1.25*Y+YY*0.75;
%show image
figure;imagesc(Y);colormap gray

My result:

Paper's result:

original image:

0 个答案:

没有答案