5

For my bachelor thesis I need to analyse images taken in the ocean to count and measure the size of water particles.

my problem: besides the wanted water particles, the images show hexagonal patches all over the image in: - different sizes - not regular shape - different greyscale values

(Example image below!)

It is clear that these patches will falsify my image analysis concerning the size and number of particles. For this reason this patches need to be detected and deleted somehow.

Since it will be just a little part of the work in my thesis, I don't want to spend much time in it and already tried classic ways like: (imageJ)

  • playing with the threshold (resulting in also deleting wanted water particles)
  • analyse image including the hexagonal patches and later sort out the biggest areas (the hexagonal patches have quite the biggest areas, but you will still have a lot of haxagons)
  • playing with filters: using gaussian filter on a duplicated image and subtract the copy from the original deletes many patches (in reducing the greyscale value) but also deletes little wanted water particles and so again falsifies the result

a more complicated and time consuming solution would be to use a implemented library in for example matlab or opencv to detect points, that describe the shapes. but so far I could not find any code that fits my task.

Does anyone of you have created such a code I could use for my task or any other idea?

croped version of an image

You can see a lot of hexagonal patches in different depths also. the little spots with an greater pixel value are the wanted particles!

PiotrWolkowski
  • 8,408
  • 6
  • 48
  • 68
homework
  • 51
  • 3
  • 5
    Can you upload the images somewhere and post the link? – gfkri Mar 18 '15 at 12:16
  • @gfkri Actually, with 2 upvotes he should be able to post images now. – beaker Mar 18 '15 at 18:15
  • finally I could upload a cropped image to the text. – homework Mar 19 '15 at 13:09
  • 3
    The 'hexagonal patches' look like out of focus particles to me. Are you sure you want to ignore them? – Cecilia Mar 19 '15 at 14:19
  • thanks for replying! to 2cents: I forgot to mention that I am only interested in the focused particles (the tiny little irregular shaped spots), because the actually task is to count the particles in a specific volume of water to get the particle concentration of the volume. This volume is the focus volume that I know due to calibration. These hexagons just appeared due to over exposure reflection of out of focus particles, you are right. But as I said, they are out of interest. New images from the latest expedition do not show these hexagons, since we changed settings. – homework Mar 19 '15 at 16:31
  • @homework what is wrong with taking the image duplicating it, taking the hexagons out of one and comparing two the other? – tox123 Mar 21 '15 at 22:24
  • tox123 Thanks, but "taking out hexagons" is exactly my problem! Also, I am not interested in these hexagons but in the little irregular particles. – homework Mar 23 '15 at 07:52
  • 1
    I would try to apply a low pass filter to remove the objects you are interested in. Vary the cutoff frequency so you remove all of your small features. Then use the difference of your original image and the filtered image to remove the larger objects. – Codey McCodeface Mar 24 '15 at 13:31
  • As it is not clear to me which ones you actually want to count, could you highlight the ones you are interested in as well as the false-positives in the picture? Also, is the lighting setup / brightness of the images constant in the experimental setup or changing over time? – mbschenkel Apr 05 '15 at 21:15

2 Answers2

0

Image processing is quite an involved area so there are no hard and fast rules.

But if it was me I would 'Mask' the image. This involves either defining what you want to keep or remove as a pixel 'Mask'. You then scan the mask over the image recursively and compare the mask to the image portion selected. You then select or remove the section (depending on your method) if it meets your criterion. One such example of a criteria would be the spatial and grey-scale error weighted against a likelihood function (eg Chi-squared, square mean error etc.) or a Normal distribution that you define the uncertainty..

Some food for thought

Chris
  • 362
  • 6
  • 16
0

Maybe you can try with the Hough transform:

https://en.wikipedia.org/wiki/Hough_transform

Matlab have an built-in function, hough, wich implements this, but only works for lines. Maybe you can start from that and change it to recognize hexagons.