JermanEnhancementFilter icon indicating copy to clipboard operation
JermanEnhancementFilter copied to clipboard

question about parameter setting

Open wujy2015 opened this issue 5 years ago • 4 comments

Hi Tim,

I got a very desent result from your code. Most coronary artery has been captured. I tried the sigma value ranging from 0.25 to 16. The problem is there are lots of false positive especially heat mussel, bones and edge of the border. My understanding is the algorithm also captures the big object. Any thoughts how to remove those false positive region? Here is one example from the results: https://drive.google.com/open?id=1ZfSS6jMT70xitvITxXSVX1T9TKHa68vw

Best, Jeffery

wujy2015 avatar May 11 '19 19:05 wujy2015

Hi,

sorry for a late reply. Without having the original image and the code that you used, it is quite hard to say what is wrong.

I think that some of your questions were already extensively answered in one of the previous issues so I would kindly suggest that you read this issue thread: https://github.com/timjerman/JermanEnhancementFilter/issues/3

Regards, Tim

timjerman avatar May 13 '19 04:05 timjerman

Hi Tim,

Thanks for your reply. The linked question is very helpful to me. However for my case, most of artery can be filtered out. But I don't know how to mask out the heart and the bone. Would you mind give me some suggestion? Here is my volume: https://drive.google.com/file/d/18gw0GDNocs-7BwHoXLsNj2yOxbcihKi4/view?usp=sharing The image spacing is 0.25; 0.468; 0.468. Vessel diameter is from 0.5 to 6.0 mm.

load('volume_ori.mat');

#filter out non vessel area I(I<-30) = -30;

V = vesselness3D(I, [0.1; 0.3; 0.5], [0.25; 0.468; 0.468], 0.85, true); save('result.mat', 'V');

wujy2015 avatar May 13 '19 18:05 wujy2015

I think that you have quite a complex problem that will not be solved so easily just by using a vessel enhancement filter.

With the code you used you were going in the right direction. Maybe just the scales are too small. For your image I would do something like this.

I = single(I);
I(I>700) = 700;
I(I<100) = 100;
I = I - min(I(:));
I = I / max(I(:));
V = vesselness3D(I, 0.5:0.25:1.5, [0.25; 0.468; 0.468], 0.85, true);

Unfortunately the result has quite some false positives as there are many objects that seem tubular in shape. There is no easy solution on how to remove them. You can remove some of them by thresholding V, run the connected components algorithm, and than remove smaller connected components. Ideally, as you already said there would be a need to mask out the heart and the bones, however, I don't have any experience with this, so unfortunately I can't suggest what to do.

Another thing that you can try is setting higher sigmas, e.g. 6 or 8, and see if this can help you get a response where only the larger objects are detected. You could than threshold this response and use it as a mask to remove larger objects. You can also try the blobness filter for the removal of larger spherical objects.

Regards, Tim

timjerman avatar May 14 '19 07:05 timjerman

Do you have a python version to enjoy ?

daqiudi avatar Apr 26 '24 10:04 daqiudi