gpt4 book ai didi

python - 平滑二值图像的边缘

转载 作者:太空狗 更新时间:2023-10-29 17:24:26 25 4
gpt4 key购买 nike

如何平滑阈值处理后获得的血管二值图像的边缘。

enter image description here

我尝试了一种有点类似于 this method 的方法但并没有完全得到我预期的结果。

enter image description here

代码如下:

import cv2
import numpy as np

INPUT = cv2.imread('so-br-in.png',0)
MASK = np.array(INPUT/255.0, dtype='float32')

MASK = cv2.GaussianBlur(MASK, (5,5), 11)
BG = np.ones([INPUT.shape[0], INPUT.shape[1], 1], dtype='uint8')*255

OUT_F = np.ones([INPUT.shape[0], INPUT.shape[1], 1],dtype='uint8')

for r in range(INPUT.shape[0]):
for c in range(INPUT.shape[1]):
OUT_F[r][c] = int(BG[r][c]*(MASK[r][c]) + INPUT[r][c]*(1-MASK[r][c]))

cv2.imwrite('brain-out.png', OUT_F)

如何改善这些粗糙边缘的平滑度?

编辑

我想平滑边缘,类似于 http://pscs5.tumblr.com/post/60284570543 .如何在 OpenCV 中执行此操作?

最佳答案

这是我用你的图片获得的结果:enter image description here

我的方法主要基于应用于放大图像的几个cv::medianBlur

代码如下:

cv::Mat vesselImage = cv::imread(filename); //the original image
cv::threshold(vesselImage, vesselImage, 125, 255, THRESH_BINARY);
cv::Mat blurredImage; //output of the algorithm
cv::pyrUp(vesselImage, blurredImage);

for (int i = 0; i < 15; i++)
cv::medianBlur(blurredImage, blurredImage, 7);

cv::pyrDown(blurredImage, blurredImage);
cv::threshold(blurredImage, blurredImage, 200, 255, THRESH_BINARY);

锯齿状边缘是由于阈值处理造成的。如果您对非二进制输出图像感到满意(即具有 256 种灰色阴影),则可以将其删除并获得此图像:enter image description here

关于python - 平滑二值图像的边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37409811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com