I have created an image processing application for a university project. I am now at the stage where I need to be able to trace a blood vessel between two select co ordinates. I haven't covered this kind of thing before so any help on where to start or any links / material I could read to help would be greatly appreciated.
First step is to reduce your original image to a black and white (no gray) image where black (for example) represents the blood vessels and white is everything else. The algorithm for this entirely depends on the nature of your original image and without a sample photo I couldn't give you any concrete suggestions. Perhaps a simple thresholding might work or you might need edge detection or maybe something else. After that you'd need to try something like a flood-fill algorithm to find the connecting black pixels between two points.
Understanding the scope of the problem is the first step on the path to true panic
What do you mean by "to trace a blood vessel between two select co ordinates"? You'd select two points on the image, and the algorithm is supposed to find an area of similarly-colored pixels (the vessel) that runs between those points?
Joined: Sep 05, 2011
Thanks for the replies. First the images are from the DRIVE database http://www.isi.uu.nl/Research/Databases/DRIVE/ is the website with the images. They are retinal images taken from diabetics during a screening program. They are 584 by 565 in size roughly. In my application I use an Image J library to decode the images into grayscale buffered images. I am trying to automate the process of extracting vessel maps which are essentially the outline of the vessels. I am looking at clicking a point within the vessel and then selecting the end of the vessel and creating an algorithm that will track the vessel, record widths and then extract it. I hope this makes more sense. I did create simulated vessels myself and created an algorithm to travel along the vessel and record widths but that was by travelling along the columns which isn't realistic in real images, hence the reason for a new algorithm. I am new to image processing itself and although I have learned a lot since commencing the project I am finding it hard to get started with designing an algorithm to do this.
Again thanks for the replies and I appreciate any suggestions.
Joined: Mar 22, 2005
Imagej - an excellent tool :-) Yep, this sounds like a perfect use case for ImageJ, and I'm certain people have used it for exactly that before. There may already be a macro or plugin that does this. But the people who would know about that are unlikely to hang out here - post to the ImageJ mailing list, and you're likely to get help much faster than here. (Having that said, I do hang out here and am happy to provide help with Java development around ImageJ, but the mailing list would be a better first stop for this specific application.)
Joined: Sep 05, 2011
That's great I will do that. The help is really appreciated.