High/Low Pass Filters

Hello,

I am looking for a high/low pass filter and I am suprised to see that either I cannot find it on KNIP or it really hasn't be implemented yet? Looking at http://www.knime.org/introduction/features I can see that it does mention a "LowPass filter" howver I cannot seem to find it.

Maybe it is just named differently and I cannot find it?

Specifically, filters like ADHE and BHPF (Butterworth High Pass Filter) are the most interesting ones. I did fine CLAHE, but I am not sure about the parameters of it, any chance you could explain them further?

Cheers,

Paulius

Hi Paulius,

ADHE: I don't know the filter. Maybe you can put a link?

Butterworth: This is no problem, we can easily add this filter to our "convolution kernel creator" node. Do you know this node? You can create arbitrary kernels in this node (alternatively you can read them from disk) and then put these kernels into the "Convolver" node where you can filter your image in the fourier domain as well as in the spatial domain. I think in the Difference of Gaussian Tutorial (http://tech.knime.org/files/knimeip/workflows/Tutorial_DifferenceOfGaussian.zip) there is an example how to use this node. Anyway, I will add the Butterworth Kernels during the next week.


About CLAHE: The parameters are described in the Node Description. Doesn't this description help? If the description doesn't we should improve it. Can you tell me what exactly is hard to understand?

Tip: For background substraction you could use the ImageJ1 Rolling Ball Algorithm (see in ImageJ Macro Node: "Substract Background") or simply substract the background on your own: Filter your image with a pretty large gaussian and substract the resulting image from the original image using the "Image Calculator".

 

I hope this helps,

Christian

Hey Christian,

First of all, thanks for implementing Butterworth, sounds great!

Regarding ADHE - sorry for the confusion, I guess it's actually just the "normal" AHE (i.e. the non-contrast-limited version of CLAHE).

Regarding CLAHE - I have played a round with it now and decided it just won't cut it so I'll resort to Image Normalizer which seems to work better for what we need it.

Also, the Subtract Background seems to work perfectly, thanks for that!

Paulius

Hello Christian,

Is there any news regarding the Butterworth filter?

Thanks,

Paulius

Hi Paulius,

I'm currently traveling, but I will add it asap.

Christian

 

Hi Paulius,

1. you are right, FFT is not available directly. If you just want to filter your image in the fourier space you can use the Convolver in combination with the Kernel Creator. Anyway, in the future we also will have a FFT node behaving as you know it from IJ.

2. Sure! After you obtained the table, you are using Row-Filters right? You can "recompose" a labeling again using the "GroupBy" node. Here is what you should do:

* Group: SourceLabeling

* Aggregation Method: Compose Labeling on BitMask Column (Edit is to the right of the method)

* Interval-Size: Labeling

* Label: Label.


The rest you can leave as it is I think. There is an example available in our HCS Example Workflow in the Metanode "Analyse". Anyway, I will make a tutorial for that, as this is the most complex node we have in KNIME.

 

Does this help?

Christian

 

 

 

That's alright, thank you very much.

Also, I've got two more questions:

1. I have noticed FFT is not available in KNIME. I can see it in ImageJ just under Process -> FFT, but cannot find it in KNIME. Is there any particular reason for this?

2. Let's say I have a segmented image (after Connected Component Analysis) and I would like to filter out lots of segments using multiple criteria (especially using the Segment Features node). Now, I managed to do it and I do get every segment that I want, but I was wondering if I can display the same coloured image as after Connected Component Analysis just filtered using my criteria?

I have found the "Labelling Filter" node, but it's very limited to what I need.

Cheers,

Paulius

I should probably research on this but to save time maybe you could recommend which kernels I should look at to do something equivalent to FFT?

The filtering and displaying in a single image works absolutely perfectly though, thanks a lot for that!

Paulius

Hi Paulius,

great that the filtering worked. I'm not sure about "equivalent to FFT". FFT is a transformation from the spatial domain to the fourier domain. What you get in ImageJ is as far as I know the image in the frequency domain. What are you going to do with it? Delete frequencies?

Kernels can be used to filter an image. Very popular kernel is the gauss kernel for smoothing. you can filter you image in the spatial domain or in the fft-domain. For large kernels it's often worth to first transform the image to the fourier domain and apply the filtering there.

Anyway, what do you want to achieve? :-)

Christian

 

Hey Christian,

Basically I have this image: https://www.dropbox.com/s/uittqlnim34rqm1/ribcage.png?dl=0

My goal is to emphasize the ribs as much as possible and get rid of background noise.

After CLAHE I manage to get this:

https://www.dropbox.com/s/233fzkn5n4bwas2/ribs-clahe.png?dl=0

But this is not nearly clean enough as the bottom has lots of noise.

So I use Substract Background of the ImageJ Macro and then Gaussian Convultion and get the following image:

https://www.dropbox.com/s/iv2qvve5s6fzksy/ribs-sub-gaus.png?dl=0

This seems quite a bit better. But I need to emphasize the ribs even more and convert it into a binary image so I can use the segmentor. In order to do that I use Local Thresholding and get the following image:

https://www.dropbox.com/s/hixyj2qfmkg4emn/ribs-thres.png?dl=0

Now, this is pretty good but as you can see there's lots of noise at the bottom. Obviously this is a problem and I think a way to approach this would be emphasize the ribs even more and somehow completely get rid of the background, I'm just not entirely sure how I am to approach that. I was thinking of using a high/low-pass filters and see what happens..

Maybe you have any ideas what I could do?

Cheers,

Paulius

 

Interesting images! Did you try Edge-Detectors like Gabor, Sobel, Curved Gabor and LoG (see Kernel Creator) to enhance the images?

Are there techniques in the literature? I know that in the Digitial Image Processing Book of Gonzales they describe one use-case with X-Ray images. Do you know the book (http://www.amazon.de/Digital-Image-Processing-Rafael-Gonzalez/dp/013505267X/ref=sr_1_2?ie=UTF8&qid=1411392539&sr=8-2&keywords=gonzales+image+processing)?

Hey Christian,

Sorry for the late reply, I was on holiday.

I have tried some of them but I have hard time getting anything better. Again, this probably just requires me reading more about the filters you have mentioned.

I don't have this book that you have linked but we used another book which seems to be very similar to what you have posted. Still, I will have a look at the book you recommend, thanks!

Thanks,

Paulius

Dear Christian,

in order to replicate Low/High-Pass or Band-Pass filters as people use it in ImageJ (or what's generally known as Notch filter in signal processing), I think it would be helpful to supply an arbitrary kernel in the Fourier domain and have the Convolver node apply that kernel to the FFT-transformed image.

As far as I can tell from the node description, either both image and kernel are concverted to Fourier domain, or none of them. Is there an option to convert only the image, and leave the kernel untouched before applying the convolution?

 

Greetings,

Jan