Suppose I have a scalar image $I:\mathbb{Z}_{1,m} \times \mathbb{Z}_{1,n}\rightarrow [0,1]\subset \mathbb{R}$, where $\mathbb{Z}_{1,m} = \{1,\ldots, m\}$. (For instance, computed as the (scaled) gradient magnitude of a natural image $N$, e.g. $I=s||\nabla N||_2$).

I would like a measure $E$ of the "edge continuity", "connectivity", or "contour continuity" of $I$. We can call $E(I)$ the "connectivity energy" of the image.

In other words, I am assuming $I$ is a scalar image of edges/curves, and I want to know how "well-attached" the curves are. For instance, Gaussian noise or some number of isolated pixels would do poorly, as would the entire image being 1 or a smooth gradient. A bunch of lines would score highly.

I do not really care about the curvature of the curves. For circles, for instance, any radius is equally fine (though of course as $r\rightarrow 0$ it becomes a point which should score poorly!). This means I don't want to do corner detection. Similarly, I am also not picky about thickness being more than one pixel, but of course beyond some number of pixels a "curve" becomes a "region" and should be penalized (perhaps the measure requires a parameter for this).

Lastly, ideally, the computation of $E$ should be cheap (fast), with as few parameters as possible.

Unfortunately I don't have image processing expertise to figure this out. I was thinking about using the structure tensor, but we already kind of have a gradient-magnitude-like image, so I'm not sure it makes sense here. Another idea is to convolve a bunch of oriented edge filters over the image and then try to have it match one and only one of them? Surely there must be better methods in the literature. :)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.