This is a pure image processing technique to detect the dims or stains, whatever you call, automatically. It is a type of edge detection method called Gradient Method. It is a type of image segmentation where in which, first applying the Gaussian Lowpass Filter to the image will give you a smoothed image. After that convolving the image with two masks called horizontal and vertical masks, which gives the horizontal and vertical gradient values of the image. To the find the magnitude of the gradient values we have to square the horizontal and vertical values and finding the square root of the combined values. This gives the gradient values of the image. The highest gradient value in the image falls on the edge of the dim or the stain. There we can put an arrow to identify the dim. This technique is purely in spatial domain of the image.
This code hassome bugs. Those are not very serious to effect the actual concept of the code. The bugs are as follows:
- 1. The image background is CYAN in color. Actually if you observe the 6 values after 94th byte using any editer like ULTRAEDIT etc.., you can find 0x0D, 0x0A, 0x0D, 0x0A, 0x0D, 0x0A. If you could remove those three 0x0Ds, you can find the image in a pure 8bit gray scale image. This bug is may be due to the typecasting problems with
- It cannot dectect more than one dim in the image.
- As the thresholding is not done, this algorithm will also place the arrows in an image with out a dim. I commented the thresholding part of the code which you can see at line no. 255. The thresholding value will be approximatley above 1.000. This part is left to the users.
I am trying to overcome the above mentioned bugs in my second version of the program.