улучшение кромки с помощью кривой - PullRequest
0 голосов
/ 18 сентября 2018

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

Мой результат:

Результат работы:

Исходное изображение:

...