Effective 2D edge detection in Python

I know that this problem was solved earlier, but it was difficult for me to find any literature describing the algorithms used to process such data. I essentially do an edge search on a 2D dataset. I want to find a couple of points on the eye diagram (usually used to qualify high-speed communication systems), and since I had no experience in image processing, I try my best to write effective methods.

As you can see, these charts are called so because they resemble the human eye. They can vary greatly in thickness, slope and noise depending on the signal and the system under test. Typically, the measurements are jitter (horizontal thickness of the intersection zone) and eye height (measured either at any specific percentage of the width, or at the maximum possible point). I know that this is best done with image processing instead of a more linear approach, as my attempts still take a few seconds to find the left side of the first intersection. Any ideas on how I should do this in Python? I already use NumPy to do some processing.

Here is some sample data , it is formatted as a 1D array with related data on the x axis. For this specific example, it should be broken down every 666 points (2 * int ((1.0 / 2.5e9) /1.2e-12)), since the signal speed was 2.5 GB / s and the time between points was 1.2 ps.

Thanks!

Example 1Example 2

+6
source share
2 answers

Have you tried OpenCV (Open Computer Vision)? It is widely used and has a binding to Python.

Not to be PITA, but are you sure you will not be better off using a numerical approach? All the tools that I saw for analyzing eye diagrams go digitally; I have not seen anyone who analyzes the image itself.

You say that your algorithm is painfully slow in this dataset - my next question would be why. Are you looking at a redundant dataset? (I assume you are.) And if so, did you try to destroy the signal first? This will at least give you fewer samples to run your algorithm.

+3
source

just go down your route for a moment, if you read these images in memory, as they are, it would be quite easy to make two fills (the initial center and the middle of the left edge), which include all the β€œwhite” data. maximum and minimum height in each column and maximum horizontal extent, then you have everything you need.

In other words, I think you are thinking too much about it. edge detection is used in complex "natural" scenes when the edges are unclear. here the edges are so obvious that you don’t need to improve them.

+1
source

Source: https://habr.com/ru/post/895187/


All Articles