How to automatically separate fibers from nuclei in a histological image ?

2 views (last 30 days)
Hi everybody !
I am working on histological images on matlab, and I would like to measure orientation of fibers on my images.
I have tried my orientation determination code on a 'simplistic' image from paint (see bellow) and it's working quite well. I am using structural elements lines that I rotate from 1 to 180° using imopen.
So know my next step is to isolate fibers in my pictures so that I can run the algorithm without measuring nucleus orientation for example.
Here is an example of the kind of images I have :
(fibers I would like to measure are the small black lines)
and without visible fibers :
For know, I have been struggling with this problem using various of thecnics such as opening with small disks, sobel filter with bwareaopen, or even clustering in L*a*b space for the image with colours.
I would like to have your point of view on how I could do such thing (maybe neural network is my only option here?). At first I would like to have a simple algorithm, even if it's no perfect !!
Thank you very much in advance for your help !
Simplistic image :

Answers (1)

Maneet Kaur Bagga
Maneet Kaur Bagga on 7 Sep 2023
Hi Francois,
As per my understanding of the question, to isolate the fibres from the histological images considering a neural netwrok based approach can be a suggested option. For designing a neural network for the fibre segmentation you may use popular architectures like U-Net, FCN(Fully Convolutional Network) or DeepLab.
You may refer to the following MATLAB Documentation for the implementation of the architectures.
U-Net
FCN
DeepLab
For determining the orientation of the fibre you may refer to the Region and Image Properties from the MATLAB Documentation specifically the Orientation section:
I hope this helps!
Thank You
Maneet Bagga
  2 Comments
François
François on 13 Sep 2023
Hi Maneet,
Thank you very much for your answer. I am indeed considering a neural network for the fibre segmentation, but I was wondering if there was a more 'simpler' approach as I don't have a lot of data (2 images in 30720x16016 .ndpi format).
I will anyway try what you suggested and come back to you !
Thank you again,
François Fournier
Maneet Kaur Bagga
Maneet Kaur Bagga on 13 Sep 2023
Hi Francois,
For a smaller dataset, you can try these two alternate approaches:
  1. Converting the image to a gray scale image, then applying a thresholding technique(global or adaptive) followed by applying morphological operations like erosion("imerode"), dilation("imdilate"), opening("imopen") or closing("imclose") to enhance the fibre structure and separate them from the backgorund.
  2. Construct a graph representation of the image using the "graydiffweight" function to compute the weights between neighboring pixels based on their intensity differences. Apply graph-based segmentation algorithms like normalized cuts (nCut) or minimum spanning trees (graywatershed) to segment the fibers.

Sign in to comment.

Categories

Find more on Biomedical Imaging in Help Center and File Exchange

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!