Home / Project Blogs / Axiome 7pt Fiber Scale

Goal

The goal of this project is to bin images of neuronal fibers in a discrete scale of 0–7, the format of the Axiome framework. Once we are able to classify individual images, we will be a step closer to auto–populating Axiome tables.

Axiome

The Axiome is a data framework built for Brain Maps 4.0.

The Axiome template is a Microsoft Excel file that can be exported as a CSV file. It has a Toggle to switch between the two data modes currently available on the Axiome: counts & 0–7 scale. Counts are used for cell bodies and the scale is used to quantify presence of fibers. For the purpose of this project, the figure above is showing an example of the 0–7 scale mode.

I will explore different approaches to bin images of fibers in this 0–7 scale.

Data

The figure below shows the images I will attempt to bin. All 80 images are RBG and 128×128 pixels. Download files here.

Images were provided by Ken Negishi. Rows are sorted in ascending class (0– 7) from top to bottom.

Pre–Process

The images below show the result of processing the images with these methods:

  • Flat Field

  • Gaussian Blur (Sigmas 1, 2, 3, 5, 10)

  • Normalization

Illumination Balancing

Gaussian Bluring w Sigma = 1

Gaussian Bluring w Sigma = 2

Gaussian Bluring w Sigma = 3

Gaussian Bluring w Sigma = 5

Gaussian Bluring w Sigma = 10

Normalization

Filters

The images below show the result of filtering the original images with these methods:

  • Farid

  • Frangi

  • Gabor

  • Threshold

  • Laplace

  • Hessian

  • Sato

  • Meijering

The last column shows the average of each measure (sum, mean, and standard deviation) per row. Each metric is color–coded following batlow which shows dark blue for low values and light pink for large values. What we want to see is which filtering processing (alone) results in a perfect sorting of the metrics. Visually the row averages for any metric should follow something like this 👇🏽 but I also provide whether or not the metrics actually sort in the figure legends to confirm the visual trends.


Farid

Sorted? mean: False std: False sum: False

Frangi

Sorted? mean: False std: False sum: False

Gabor w Frequency = 1

Sorted? mean: False std: False sum: False

Gabor w Frequency = 0.7

Sorted? mean: False std: False sum: False

Gabor w Frequency = 0.6

Sorted? mean: False std: True sum: False


Gabor w Frequency = 0.5

Sorted? mean: False std: True sum: False

Gabor w Frequency = 0.3

Sorted? mean: False std: True sum: False

Gabor w Frequency = 0.1

Sorted? mean: False std: True sum: False

Threshold: image>0.5

Sorted? mean: False std: False sum: False

Threshold: image>0.7

Sorted? mean: False std: False sum: False

Threshold: image>0.9

Sorted? mean: False std: False sum: False

Threshold: image>0.95

Sorted? mean: False std: False sum: False

Laplace

Sorted? mean: False std: True sum: False

Sato

Sorted? mean: False std: False sum: False

Hessian

Sorted? mean: False std: False sum: False

Meijering

Sorted? mean: False std: False sum: False

Manual Annotations

I'm currently working on the manual annotation of the fibers with Adobe Illustrator. I am using the brush Artistic_Ink / Tapered Round at 0.01 pt thickness. I figured this could be a better way to quantify how many pixels actually contain fibers to ultimately bin them by number of pixels; the thresholded images above seem to follow the fiber density trend as you go down the rows but results in detection of bright pixels that are not fibers.

All of this after the tracings are vetted by USNL.

Path

This also shows the anchor points that are saved as coordinates in the SVG file. The coordinates could potentially be used if we wanted to try a non–computerVision approach.

Path over Image

Here you can see how i traced the line as close to the center of the fibers as possible. You'll see that in the raster, any pixel position the path touches is fully colored in the raster export of this file.


Mask

As mentioned in figure "Path over Image", the fiber appearance is thicker, but...

Mask over Image

... once overlayed to the image, the thickness fits the fiber in the image. My only concern is how the mask will look like once we have a lot of fibers in the image; this image belongs to class 1.

Note: I started delineating fibers for class 1 at 7:40pm and just finished class 2 at 8:40pm. I will stop here and send some out to USNL for verificaiton before continuing to 3–7.

Some mods – 4/27/21

I have not continued the manual annotations. Upon reviewing the blog, I realized it would be nice to have some metrics per row. The metrics could potentially be used as reference values to classify any given image. Moreover, since I am displaying the entire dataset after every filtering/image processing, the metrics could give us a visual of which image processing helps us separates the data best, especially if we color code the values linearly.

Showing the original data firstn with this plotting method. Rows are sorted in ascending class (0– 7) from top to bottom. Last column shows the average measures per row of the original data colored by their relative magnitude, per metric. Color scheme is batlow and it shows dark green for low values and light pink for large values.

In progress... come back for updates