Skip to content

This is a demonstrative workflow for analyzing fine vessel structures from light microscopy images

Notifications You must be signed in to change notification settings

pathakspandan/Vessel-Branching

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

This guide demonstrates how to analyze fine vessel structures from light microscopy images using Python image processing tools, mainly scikit-image.

Prerequisites

Ensure you have the following installed:

  • Python 3.x
  • Jupyter Notebook
  • scikit-image
  • numpy
  • matplotlib

You can install the required packages using pip:

pip install scikit-image numpy matplotlib

Workflow

1. Load the Image

First, load the microscopic image using scikit-image.

from skimage import io
import matplotlib.pyplot as plt

image = io.imread('path_to_your_image.png')
plt.imshow(image, cmap='gray')
plt.title('Original Image')
plt.show()

2. Preprocess the Image

Convert the image to grayscale and apply any necessary preprocessing steps such as denoising or thresholding.

from skimage.color import rgb2gray
from skimage.filters import threshold_otsu

gray_image = rgb2gray(image)
thresh = threshold_otsu(gray_image)
binary_image = gray_image > thresh

plt.imshow(binary_image, cmap='gray')
plt.title('Binary Image')
plt.show()

3. Skeletonize the Image

Skeletonize the binary image to reduce the vessels to single-pixel wide lines.

from skimage.morphology import skeletonize

skeleton = skeletonize(binary_image)

plt.imshow(skeleton, cmap='gray')
plt.title('Skeletonized Image')
plt.show()

4. Analyze Branching Points

Use scikit-image to identify and analyze branching points in the skeletonized image.

from skimage.morphology import branch_points

branching_points = branch_points(skeleton)

plt.imshow(branching_points, cmap='gray')
plt.title('Branching Points')
plt.show()

5. Quantify Branching

Quantify the number and location of branching points.

import numpy as np

num_branching_points = np.sum(branching_points)
print(f'Number of branching points: {num_branching_points}')

6. Further Quantification

Perform any additional quantification or morphological analysis needed.

from skimage.measure import regionprops
from skimage.segmentation import clear_border

labeled_skeleton, num = clear_border(branching_points, return_num=True)
props = regionprops(labeled_skeleton)

for prop in props:
    print(f'Branching point at ({prop.centroid[0]}, {prop.centroid[1]}) with area {prop.area}')

Summary

This guide provides a basic workflow for analyzing and quantifying branching structures in microscopic images using Python and scikit-image. You can further extend this workflow to suit your specific analysis needs.

P.S: Feel free to modify the paths and parameters as needed for your specific image and analysis requirements.

About

This is a demonstrative workflow for analyzing fine vessel structures from light microscopy images

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published