Skip to main content
9 votes

Best way of segmenting veins in leaves?

Following on from the above excellent answer, here is how to do it in python using scikit funcitons. ...
Matthew Shun-Shin's user avatar
7 votes

Best way of segmenting veins from arm?

So one good step to enhance the vein-like structures is coherence enhancing diffusion: Weickert, Joachim. "Coherence-enhancing diffusion filtering." International Journal of Computer Vision 31.2-3 (...
Tolga Birdal's user avatar
  • 5,465
6 votes

What does convolving an image with kernel [1 -2 1] do? How is it different than convolving with the derivative kernel [1 -1]?

Convolution with the [1 -1] kernel (A) is a derivative filter, which computes the finite difference approximation to the first derivative. The ...
Cris Luengo's user avatar
  • 2,559
5 votes
Accepted

Detect circles in image

1) Normalize your image to range $[0,255]$. 2) Select a threshold and threshold the image. For your image, what worked is: $\tau=[140-150]$. 3) Compute a Euclidean distance transform. 4) Apply ...
Tolga Birdal's user avatar
  • 5,465
4 votes
Accepted

Deriving the Euler-Lagrange Equations for the Chan-Vese Model

Thanks to Luminita Vese, who responded to this question via email. I will post the answer here. Let $\varphi_\epsilon(x) = \varphi(x) + \epsilon\eta(x)$ for some test function $\eta(x)$. \begin{...
Charlie's user avatar
  • 91
4 votes
Accepted

What Is the Difference Between MRF and Total Variation in Noise Removal?

These are two different concepts that you talk about. First, MRF gives you a framework to do discrete optimization of problems, which respect the Markovian property, that is a pixel is conditioned ...
Tolga Birdal's user avatar
  • 5,465
4 votes
Accepted

What does convolving an image with kernel [1 -2 1] do? How is it different than convolving with the derivative kernel [1 -1]?

Both are high pass filters. Filtering with [1 -2 1] is the same as filtering with [1 -1] twice. So the longer kernel is a steeper high pass filter and emphasize the edges more.
Hilmar's user avatar
  • 44.8k
4 votes
Accepted

Can DFT magnitude be used to identify repeating patterns in an Image?

Yes, the DFT magnitude can reveal repetition patterns in an image. I provide an intuitive understanding for the results returned by the DFT which will hopefully make the interpretation of the DFT ...
Dan Boschen's user avatar
  • 51.4k
3 votes

Gap Filling Contours / Lines

I managed to find a solution of your problem by simply using a disk-like structuring element instead of a square/rectangular one for the closing operation. A comparison of both approaches' results is ...
Hristo Georgiev's user avatar
3 votes

Best way of segmenting veins in leaves?

This topic has always attracted a lot of interest, and yet no real consensus exists on the topic. Therefore I decided to drop a few words. My answers to previously asked similar questions on ...
Tolga Birdal's user avatar
  • 5,465
3 votes
Accepted

How we calculate Precision-Recall Curve?

You're right. When you just have a single precision and a single recall value, you get a precision-recall point, not a curve. However, machine learning models typically do not output discrete ...
Dave's user avatar
  • 296
3 votes

Vein extraction from this image

I would like to direct you to 3 references: C. Steger: “Extracting Curvilinear Structures: A Differential Geometric Approach”. In B. Buxton, R. Cipolla, eds., “Fourth European Conference on ...
Tolga Birdal's user avatar
  • 5,465
3 votes

How does image masking work?

You may interpret it this way, but this yields a limited interpretation, because for instance the image may have a maximum different from $255$. I consider masking as a product operation. For a ...
Laurent Duval's user avatar
3 votes
Accepted

Histogram of Gradient

For the sake of putting some numbers to this question, I implemented a basic histogram of gradient from scikit-image (skimage.feature.hog). Here is the timing data ...
lanery's user avatar
  • 176
3 votes
Accepted

Finding minimum in the middle of a histogram

To me, this looks like you want something like start from right. Add up bins' values, as long as the added bin is larger than the last or the value added by that bin divided by the current sum is ...
Marcus Müller's user avatar
3 votes

Lighting for computer vision automisation

What I learned so far that my lighting is not good. It's coming from a fluorescent lamp from that's right above the camera. Apparently I would have to diffuse the light with some sort of material. The ...
A_A's user avatar
  • 10.7k
3 votes
Accepted

Fitting a grid to points in a 2d space

You could represent the grid with 5 parameters: (x0, y0) to represent the offset from your image origin to the grid origin (xs, ys) to represent a multiplication factor from your image plane to your ...
dimsum88's user avatar
3 votes
Accepted

Should Edge Detection Be Applied in Spatial or in Frequency Domain?

We need to separate the concept of edge detection from the tools we use to apply the procedure. Edges are local property of the image. Being so local means we don't analyze the image in frequency ...
Royi's user avatar
  • 19.6k
3 votes

Any good alternatives of ImageJ (Fiji)?

If you’re looking for a large collection of image processing functionality geared towards quantification, I will recommend DIPlib (I’m an author). It is different from ImageJ in that it doesn’t have a ...
Cris Luengo's user avatar
  • 2,559
2 votes
Accepted

Connecting segmented region in image

I guess that the missing area is due to a ring. A solution would be to use a PCA in order to compute the finger orientation. Then you apply a closing (mathematica morphology) with an segment oriented ...
FiReTiTi's user avatar
  • 264
2 votes

Segmentation of small artifacts - Image Processing

If this is really what your input looks like then you should be able to handle this with the standard morphological image processing operations. Assuming foreground as white and background as black, ...
jwezorek's user avatar
  • 121
2 votes
Accepted

Comparison between watershed and grabcut

Watershed-based segmentation will typically lead to over-segmentation, and is very sensitive to local image noise (e.g. see discussion here). Typically watersheds are pruned/merged by using thresholds ...
GeoMatt22's user avatar
  • 181
2 votes

Scikit-Image, Numpy, and Selecting Colors (python)

You can look at your picture in a different color space, e.g. the HSV space. In this space, each pixel has 3 components: hue, saturation and value. Hue defines the color's tone, saturation the color's ...
Maximilian Matthé's user avatar
2 votes
Accepted

Scikit-Image, Numpy, and Selecting Colors (python)

Thanks to Maximilian Matthé, I have an answer. Below is his OpenCV code translated to Scikit-image. Note that I changed some parameters (e.g., reduce the size of the morphological disk) to replicate ...
Shawn's user avatar
  • 161
2 votes

Detect almost circular shapes in RGB image

The image itself is somehow blurred a little. Whole edges of trees are not visible. The only clue of tree existence seems like shadows. So I suggest using shadow information and watershed transform ...
Ozcan's user avatar
  • 264
2 votes

Simple technique to segment out optical disk and vessels from retinography

I managed to get a decent segmentation of the optical disk and vessels by applying some basic operations to the input image, starting with loading and grayscaling it: ...
Hristo Georgiev's user avatar
2 votes

How to detect the fuzzy edge in this image?

bacteria segmentation is a broad field with many approaches. here's an example. For your spesific image, I think you can do the following tricks: ...
bla's user avatar
  • 588
2 votes

edge detection evaluation methods

I strongly agree with Ava. Without a clear formulation of your task, you cannot make a meaningful ranking of algorithms. Think about your most important task and formulate clear goals. Here is an ...
L. Z.'s user avatar
  • 21
2 votes

Calculating distance between two blobs in a binary image in microns

This is relatively straight-forward with OpenCV and numpy. Step One: Using OpenCV's Blob Detector you can do something like this: ...
Colin Dickie's user avatar

Only top scored, non community-wiki answers of a minimum length are eligible