Skip to main content
Participating Frequently
June 10, 2009
Question

pattern recognition in Photoshop?

  • June 10, 2009
  • 2 replies
  • 7267 views

Hello All,

I have a challenge facing me and would like to pose a question to this board. (If I've posted it to the wrong board, please excuse me)

To what extent can I use scripting with Photoshop to perform automated pattern recognition?

Here's my Issue: As part of a manufacturing process, I need to measure two distinct, but concentric, roughly circular areas from an image of the cross section of a circular wire.

Area1: Inner core; identified as a solid Grey filled circle.  Small diameter
Area2: Interior; composed of the inner core and other "stuff" (usually many small dark Gray colored hexagonal shapes surrounded by gold). Larger diameter

Both of these areas are concentric and surrounded by a thin outer gold layer.  

I need to calculate the percent area of the inner core which equals (Area1/Area2)*100

I am looking for a script (or guidance on how to approach creating one) that would automatically find the edges of the inner core area and the Interior Area and output these values to a file. I need it to be done in as little user input as possible. (Ex: One click to select Area1, One-Two clicks to adjust accuracy of the selection, One click to select Area2, One-Two clicks to adjust accuracy of the selection, one click to save)

Dificulties:
1) The edges of the circles are not always well defined. Grey color bleeds through to the gold outer barrier due to lighting inconsistencies. (But the edge is intact to about 90% of the circumference ususally)
2) Finding the edges needs to be fairly accurate. At least as accurate as visually tracing them with a pen input device. Therefore Smoothing the selection after using magic wand often looses accuracy (due to #1)

I can get the edges sharp with levels, contrast, etc... Using Magic wand is close, but if the tolerance is too small I get better edges, but It grabs too much in the center of the circle. If the tolerance is too large, I loose the edge accuracy. Oh, and I know (roughly) the diameter of each circle before hand (so I guess I can automate trimming the image to my target areas)

Any suggestions? Do I have to look into specialized pattern recognition software? I hope someone will be able to help me approach this challenge.

Thank you in advance.

Sincerely,

Sean

This topic has been closed for replies.

2 replies

c.pfaffenbichler
Community Expert
Community Expert
June 16, 2009

I know I’m a bit late in the discussion, but I wonder if for the determination of area-relations the histogram wouldn’t be convenient?

If the actual images are similar to the one example but showed the whole diameter of the cable one could apply Dust & Scratches and/or Median to get rid of some of the noise and the apply Hue/Saturation to completely desaturate, then Posterize to 2 and make a Wand Selection of the upper left point of the image, expand and invert that and put a white Solid Color set to 50% Opacity on top.

That would create sharp edged areas of either 255, 128 or 0 in numbers that could be read out from the Histogram.

All of that is Script-able and manual corrections could easily be applied in a Layer between the image Layer and the Hue/Saturation-Layer.

I don’t know if that would produce sufficiently exact results though.

Inspiring
June 10, 2009

It's just about impossible to say with any certainty whether it can be done with scripting in PS without a set of test images available.

Some of us have written scripts that do something similar, but whether or not they would have the precision that you apparently require

is difficult to tell.

ynachshoAuthor
Participating Frequently
June 10, 2009

Xbytor2,

Your are right, I should have posted a picture

Here is a similar image I grabbed of the net that shows what I'm trying to do.  The inner core is has an obstruction at the edge that I need photoshop to "intelligently" avoid when using the magic wand.  After using the magic wand, I've tried to smooth the selection to get the selection to follow the hidden edge, but I have to apply so much smoothing that the other sections of the selection that correctly follow the edge move off the edge too much.

Like I said, probably 90+% of the time the edges are easily selectable with the magic wand.  I just don't know how to account for cases like the example I've attached.

Also, In order to automate the removal of undesired selections in the middle of the inner core, is there any way to tell photoshop that when I use the magic wand, to automatically remove any "islands" of selections that are contained within a selection. (Assuming the "island" of selections are smal, I guess I could smooth a little bit after selecting.)

Thanks for your input.

-Sean

Inspiring
June 11, 2009

Thank you for the reply,

The best I could do with the "Islands" is to use "Smooth" after the magic

wand with "Contiguous" checked. (Unchecked, it grabbs areas out side the

circle. No good)

Smoothing by 1-5 pixels seems to get rid of most of the "Islands".

To remove the shavings, can you tell Photoshop to keep a certain "stiffness"

to the selection (magic wand)? Or, Apply a "stiffness" after using the

magic wand? The "stiffness" would limit the selection path from changing

direction too quickly/sharply. Maybe you would have to turn the selection

into a path, then apply this "stiffness" to the path, then convert back to a

selection?

Thanks for thinking about this.

-Sean


The best I could do with the "Islands" is to use "Smooth" after the magic

wand with "Contiguous" checked.  (Unchecked, it grabbs areas out side the

circle.  No good)

Expanding and contracting the selection may also be useful.

Maybe you would have to turn the selection

into a path, then apply this "stiffness" to the path, then convert back to a

selection?

This would work. One problem, though, is getting a good/precise conversion from the selection bounds to the path.

After you've seen a point on the path that is too far out of alignment with the previous two points, skip it and check the next point on the path.