Я пытаюсь улучшить кровеносные сосуды сетчатки, используя кривое преобразование. Согласно документу «Извлечение кровеносных сосудов и удаление оптического диска с использованием кривого преобразования и нечетких 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
Мой результат:
Результат работы:
Исходное изображение: