从X射线图像检测和分割感兴趣区域

时间:2020-11-10 19:04:07

标签: python opencv image-processing computer-vision

我正在处理一些X射线图像,我想从图像中检测并分割感兴趣的区域。

考虑输入图片

enter image description here

我想检测图像中正方形的形状,如图像中突出显示的那样

enter image description here

输出:感兴趣的区域将看起来像这样

enter image description here

这是我到目前为止完成的代码

useEffect(() => {
    const backAction = () => {
      currenScreen === "B"
        ? setScreen("A")
        : currenScreen === "C"
        ? setScreen("B")
        : BackHandler.exitApp();

      return true;
    };

    const backHandler = BackHandler.addEventListener(
      "hardwareBackPress",
      backAction
    );

    return () => backHandler.remove();
      }, []);

我得到的结果;

enter image description here enter image description here

请指导我。

TIA

1 个答案:

答案 0 :(得分:1)

可能有用的一件事是在执行Canny边缘检测之前,先对图像进行形态学梯度处理以突出Python OpenCV中的边缘。

输入:

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