
Thanks for testing!
> I've tried it in the offline editor with the images I send you
Be aware that doing that needs careful consideration. You really
need to recreate the situation artificially, otherwise you
will get problems, that are not real problems, but purely
of your simulation.
If you simulate using captured images in the Pipeline Editor...
Back to your list:
a) I will keep it in mind.
b) "Tuning the expected angle helped." There should be
no "tuning" necessary. Make sure you did points 2+7 above.
c) QFNs should actually work the best. But again the expectedAngle must be correct! Furthermore, the diagonals on the nozzle tip must be large enough. Can you send the image?
d) Again, can you send the image?
_Mark
> - enabled "handleAsCaptured" ->
java.lang.NullPointerException
Please send the log.
And please send the two images you use as input.
_Mark
I forgot: could you please state your Units per Pixel on the
bottom camera?
I'm adding these images to the openpnp-test-images repo, OK?
_Mark
The other part just worked, when the symmetry was switched off on the asymmetric axis, and the threshold set.

_Mark
(reposted in right thread)
Hi Jan,
Thanks for providing the images and for continued testing.
I have tried with your images and found some issues with my assumptions about camera resolution and how it affects the stage.
I fixed that. See at the end.
Background:
The part you sent has 0.4mm pitch (if I'm not mistaken) and you
have ~0.02mm pixel size, so about 20 pixels correspond to the
pitch, about every 10 pixels it alternates between pads and
plastic.

The stage is written in Java, i.e. low level "bit crunching" is
quite slow. Therefore I needed to use tricks to make it perform
alright. By default, the stage uses 8 pixel subSampling in the
first pass, i.e. out of a block of 8x8 pixels only one
pixel is probed. The stage then refines the result from the first
pass by iterating with less and less subSampling, until it even
does superSampling to obtain sub-pixel precision. The trick is to
reduce the angular and positional searching space dramatically
with each iteration.
As you probably can see, sampling a 10 pixel alternating
signal with 8 pixel subSampling (at various angles)
is prone to aliasing,
or moiré.
Hence the problems with your part.
Why did I choose 8 pixels?
The 8 pixel probing worked well in the circular
symmetry stage. It probably has a connection to the 8x8
block splitting in (M)JPEG encoding that most cameras use, 8
pixels just worked best. But obviously round objects are much
simpler...
So how did I fix it?
We already have the Minimum Detail Size in the
Background calibration that actually gives us the real size of a
minimum detail, like a pad. If you set that to the 0.2mm of your
part, it works (with the upcoming version). The subSampling
will now automatically be set to half that size, which results in
4 pixel subSampling. Obviously, the stage has become slower. The Max.
Part Diameter setting on the nozzle tip is therefore also
important to reduce computation cost.


(I will write separate answers to the other stuff).
_Mark
Hi all,
Added some improvements, mostly from feed-back by Jan:

https://github.com/openpnp/openpnp/pull/1387
New testing Version available.
https://openpnp.org/test-downloads/
_Mark
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/c34fea6d-d1d6-437a-acf3-0bbc353f8437n%40googlegroups.com.
Hi Jan,
Re b)
Yeah that SOT23 part is really bad. There is also nothing much
"rectlinear" in it, even the pins' reflections aren't rectangular.
To be fair, it did also not work stably with MinAreaRect.
Re c)
You can adjust gamma. I might in fact expose it as an additional slider parameter.
Re a) d) e)
Glad to hear.
_Mark

Yes, the pipeline/stage uses more computation power, because at
its core it is written in Java. I wish I could do it in C++.
However, 4500ms is not normal, on my machine I have 120ms for the
stage for fine ICs. Note that Java needs to execute the pipeline
about 4 times before the real speed is reached (due to just in
time compilation/JIT).
What CPU do you have?
There are two settings that have a great influence: Max Part
Diameter on the nozzle tip Configuration tab and Minimum
Detail Size on the Calibration tab.
https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Background-Calibration#other-settings


If the parts on a particular nozzle tip allow for it,
decrease the Max Part Diameter and increase the
Minimum Detail Size. For instance, with 5mm Max.
Diameter and 0.4mm Minimum Detail Size I get ~45ms.

_Mark
You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/kZLS7PnSE5Y/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/tencent_18A8D708F01158A7BDF66094C2B8CE362C09%40qq.com.
> So does this feature depend on having the background calibration feature setup?
It is recommended. But if background calibration is not enabled,
it defaults to the equivalent of a 0.2mm Minimum Feature
Size.
> I have the black nozzle Juki tips that's why I'm asking.
Background calibration can still be used with the Brightness method, it will determine the background cutoff brightness instead and it can help you troubleshoot disruptive stuff visible there. And you can set the Minimum Feature Size.
https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Background-Calibration#selecting-the-method
https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Background-Calibration#trouble-shooting
> I tried this with a TQFP-128 and it took some 15 seconds, but granted that's a rather big part with a diameter close to 30mm
Wth! It should never be that long, even with 30mm!
Could you please send me the raw image? And tell me your Units
per Pixel of the bottom camera?
Note that with the default pipeline, the images should be written
as
HOME$/.openpnp2/org.openpnp.vision.pipeline.stages.ImageWriteDebug/bv_source_XXX.png
You have to enable DEBUG log level or more (in the Log tab)
for image logging to be active.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/cfca23d4-27e0-401f-b427-b699677e3562n%40googlegroups.com.
> I don't think the recognition size range of the bottom vision should be put into the nozzle tip
Note the Maximum Part Diameter data on the nozzle tip is only used if there is no part/package specific information. If you define the package size via Part size check and footprint, it will be used instead. So if you define the two pads of the 0805 for instance, it will only search a small range.
See the maxWidth and maxHeight
properties, here:
> prone to various external interference
Can you be more specific? There should be nothing causing
interference in the background. Use a shade.
Have you used Background Calibration and its Trouble Shooting?
Does it not indicate your "interference"?
https://github.com/openpnp/openpnp/wiki/Nozzle-Tip-Background-Calibration#trouble-shooting
> 2: the component model in auto feeder has the chance to reset.
Sorry, I don't understand what you mean.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/tencent_8240A9820B6163841A8F60190164DA634F05%40qq.com.
One common pitfall in OpenPnP is forgetting to press Accept.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/tencent_B417F9860FF535411CC2E2B4FA9EA7D20C06%40qq.com.
I guess it could be possible. But a lot of work, because AFAIK there is no common framework approach. Plus I'm not particularly Java/Swing knowledgeable, so I can't really say.
I believe, Jason was also talking about a solution, where changes would be immediate, no Accept needed (but perhaps an Undo available?).
If somebody could step up here, very welcome. 😁
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/35aefb5f-7813-405b-af67-2af6e160c701n%40googlegroups.com.
Hi Thea,
thanks for testing. 😎
I have to say, the overall "real world" feed-back is really bad, performance-wise. I have to conclude this needs major work, or maybe it is just not possible in Java 🙁.
The need for such a self-tuning stage has also been much lessened by the exposed pipeline parameters, I believe, so the "loss" is not so bad, I hope:
https://github.com/openpnp/openpnp/wiki/Exposed-Pipeline-Parameters
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/b61ab1ab-c620-4182-bdf1-dc8e65d5fb50n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/b61ab1ab-c620-4182-bdf1-dc8e65d5fb50n%40googlegroups.com.