Uzair
Uzair

Reputation: 231

Detection and segmentation of region of interest from X-ray images

I am working on some Xray images and I want to detect and segment region of interest from the image.

Consider input image

enter image description here

I want to detect square like shapes in the image, as highlighted in the image

enter image description here

Output: region of interest will somehow look like this

enter image description here

This is my code which I have done so far

import cv2
import numpy as np
import pandas as pd
import os
from PIL import Image
import matplotlib.pyplot as plt 
from skimage.io import imread, imshow


img = cv2.imread('image.jpg',0)
imshow(img)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
imshow(gray)

equ = cv2.equalizeHist(img)
imshow(equ)


img_resize = cv2.resize(img, (300, 300))
print(img_resize.shape)
figure_size = 9

new_image_gauss = cv2.GaussianBlur(img_resize, (figure_size, figure_size),0)
imshow(new_image_gauss)


img_edge = cv2.Canny(equ,100,200)

# show the image edges on the newly created image window
imshow(img_edge)


kernel = np.ones((5,5), np.uint8) 
img_erosion = cv2.erode(img_edge, kernel, iterations=1) 
img_dilation = cv2.dilate(img_edge, kernel, iterations=1) 
   
imshow(img_erosion) 

Results which I have got;

enter image description here enter image description here

Please guide me.

TIA

Upvotes: 1

Views: 1286

Answers (1)

fmw42
fmw42

Reputation: 53164

One thing that might help is to do morphology gradient on your image to emphasize the edges in Python OpenCV before you do your Canny edge detection.

Input:

enter image description here

import cv2
import numpy as np

# read image
img = cv2.imread("xray2.jpg")

# convert img to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# do morphology gradient
kernel = cv2.getStructuringElement(cv2.MORPH_RECT , (3,3))
morph = cv2.morphologyEx(gray, cv2.MORPH_GRADIENT, kernel)

# apply gain
morph = cv2.multiply(morph, 5)

# write results
cv2.imwrite("xray2_gradient_edges.jpg",morph)

# show lines
cv2.imshow("morph", morph)
cv2.waitKey(0)

enter image description here

Upvotes: 1

Related Questions