Solved

How to detect line scratches in image?

Posted on 2009-04-11
17
847 Views
Last Modified: 2013-11-23
Hi experts,

    I am working on borland delphi-7(pascal). Now I am working for detection of line scratches(ie verticle and horizontal lines defects)  from the image. From one of paper I got information that Luminance value will be very high or very low for the scratch as compared to their neighborhood. Now how can I detect line scratches  from the image.


   Thanking you in advance.
0
Comment
Question by:inampudi1
  • 10
  • 7
17 Comments
 
LVL 8

Expert Comment

by:BdLm
Comment Utility

there are many algo so find scratches on images, basically the depend on what the scratch on your images is looking like,   eg.

a) your are sure the line has a different color, you may work with Threshold image procedures

b) if the line is just a significant change in the color value, you will work in the gradient domain of your image
0
 
LVL 8

Expert Comment

by:BdLm
Comment Utility
some  basic info on image processing you will find here :  http://www.efg2.com/Lab/Library/Delphi/Graphics/ImageProcessing.htm


the gradient doimain topic:


Edeg detection:   http://en.wikipedia.org/wiki/Canny_edge_detector

if you need more basic info on image processing:  http://www.delphi-treff.de/tutorials/grafik-und-spiele/bitmaps/  (very good and easy to understand, but only german .-)  )
0
 

Author Comment

by:inampudi1
Comment Utility
Hi experts,

Thank you for reply,
   I am  mainly working on black and white images. Please explain me in detail about


a) your are sure the line has a different color, you may work with Threshold image procedures

b) if the line is just a significant change in the color value, you will work in the gradient domain of your image


Thanking you.

0
 
LVL 8

Expert Comment

by:BdLm
Comment Utility
here comes a rather basic procedure template,
the treshold is 128 is values; you may set pixel data above threshold to eg. 0 and below to 255; pls. do some experiments byyour self.

can you attach one of your images ?  for pure black and white images both proposed alsgo won't work good. need one more math approach. (Hough Transformations)




procedure ProcessaImage(Bit: TBitmap);

type

  PixArray = array [1..3] of Byte;

  averagecolor  : interger;

var

  p: ^PixArray;

  h,w: Integer;

begin

  for h:=0 to Bit.Height-1 do

  begin

    p:= Bit.ScanLine[h];

    for w:=0 to Bit.Width-1 do

   
 

     begin

       averagecolor : =  (p^[1] + p^[2] + p^[3]); 
 

       if averagecolor < 128 do

               begin

                    p^[1] := ..... ;

                    p^[2] := ..... ;

                    ...

               end

               else

               begin
 

                    p^[1] := ..... ;

                    p^[2] := ..... ;

                    ...
 
 
 

               end;
 

      

      Inc(p);

     end;

  end;

end;

Open in new window

0
 

Author Comment

by:inampudi1
Comment Utility
Hi experts,

  Pl find my image containing some vertical lines.


I will test the code you have given.
testimg.bmp
0
 

Author Comment

by:inampudi1
Comment Utility
Hi BdLm,

   i checked your code but it is not detecting scratch. Even I checked with different values for FOR loop. Pl tell me how to change the code.
0
 
LVL 8

Expert Comment

by:BdLm
Comment Utility
here come a sample image using the gradient methode,  f(x)  = df/dx + df/dy
can you code that and use only df/dx to focus on scratches ?

test-gradient
0
 
LVL 8

Expert Comment

by:BdLm
Comment Utility
0
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 
LVL 8

Expert Comment

by:BdLm
Comment Utility
I played a bit with thresholding ->  no success

with gradient -> you will find the edges (but all horizontal and vertical) , see post above
here is the image again with extension

test-gradient.bmp
test-threshold.bmp
0
 

Author Comment

by:inampudi1
Comment Utility
Hi Bdlm,
    I saw your images.But your algorithm  is detecting  some of the objects also as scratch , and some of lines are not detecting.  Please tell me any other algorithms.
0
 

Author Comment

by:inampudi1
Comment Utility
Hi Bdlm,

     By using Hough_transform I tried, it is detecting lines fine, along with that, some of real part of image also detected as line, for ex pillers in a image and narrow roads in the image.

     How can I filter them.
0
 
LVL 8

Expert Comment

by:BdLm
Comment Utility
the long wooden pales on your images own almost the same properties in the  pictures as your scratch,  you will need to implement a gradient algo first and then to a scond check of these data and scrren out if the scratch is a scratch or a wooden pale
0
 
LVL 8

Accepted Solution

by:
BdLm earned 500 total points
Comment Utility
here comes an example for the color distribution, the pales and the scratches own almost the same size and gradient (df/dx), is this typical for all of your images?

pale-2.bmp
0
 
LVL 8

Expert Comment

by:BdLm
Comment Utility
try to mesure the length of a horicontal line, that might be a good screening criteria.
0
 

Author Comment

by:inampudi1
Comment Utility
Hi Bdlm,

  from color destribution graph how can I get the (how can I mark the)  lines in the image. Please  tell me.
0
 

Author Comment

by:inampudi1
Comment Utility
Hi,
   

   Please tell me how Can I detect bloches,and dust in the image.


0
 
LVL 8

Expert Comment

by:BdLm
Comment Utility

for dust (salt and pepper noise) I commend to use median filtering of your image,
 
see eg.  http://www.efg2.com/Lab/Library/Delphi/Graphics/ImageProcessing.htm
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Jaspersoft Studio is a plugin for Eclipse that lets you create reports from a datasource.  In this article, we'll go over creating a report from a default template and setting up a datasource that connects to your database.
The viewer will learn how to use NetBeans IDE 8.0 for Windows to connect to a MySQL database. Open Services Panel: Create a new connection using New Connection Wizard: Create a test database called eetutorial: Create a new test tabel called ee…
THe viewer will learn how to use NetBeans IDE 8.0 for Windows to perform CRUD operations on a MySql database.

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now