DIP——边缘提取与分割

1.使用canny算法进行边缘提取

本实验比较简单,基本思路是对原图像进行一个高斯模糊处理,用于去噪,之后转换为灰度图,直接调用cv库中的canny记性边缘提取。若想直接得到彩色边缘,则通过按位与操作,将原始彩色图像和Canny边缘图像结合,得到彩色边缘图。具体完整代码如下:

python 复制代码
# canny边缘提取实验
import cv2 as cv
import numpy as np

def edge_demo(image):
    # 对输入的图像进行高斯模糊,去噪,其中高斯核模板大小为3*3,标准差为0
    blurred = cv.GaussianBlur(image, (3, 3), 0)
    # 转换为灰度图
    gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY)

    # 使用Canny边缘检测算法,设置低阈值为50,高阈值为150,提取图像的边缘。经验设定
    edge_output = cv.Canny(gray, 50, 150)
    # 在窗口中显示Canny边缘提取的结果图像。
    cv.imshow('Canny Edge', edge_output)
    # 彩色边缘提取
    # 通过按位与操作,将原始彩色图像和Canny边缘图像结合,得到彩色边缘图。
    dst = cv.bitwise_and(image, image, mask=edge_output)
    cv.imshow('Color Edge', dst)

# 绘图
src = cv.imread('ai.jpg')
cv.namedWindow('input image', cv.WINDOW_AUTOSIZE)
cv.imshow('input image', src)
edge_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

实验结果

原始图像:

灰度处理后canny算法提取的边缘图像

彩色边缘图像

2.使用大津法进行图像分割

本实验的原理也比较简单,使用大津法进行图像分割。大津法(Otsu's Method)是一种自适应阈值选取的方法,通常用于图像分割。其目标是通过最大化类间方差(类间方差是指分割后的两个类别之间的方差)来找到一个合适的阈值,将图像分为两个类别,一类为前景,一类为背景。这里我们绘制灰度直方图,并且使用OpenCV的threshold函数进行OTSU阈值化。并且将计算得到的阈值存储在 ret1 中,OTSU阈值化后的图像存储在 th1 中。其完整代码如下:

python 复制代码
import cv2
import numpy as np
from matplotlib import pyplot as plt

image = cv2.imread("flying_horse.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

plt.figure(figsize=(6, 6))
plt.imshow(image, cmap="gray")
plt.title("Source Image")
plt.xticks([]), plt.yticks([])
plt.show()

# 显示直方图
plt.figure(figsize=(6, 6))
# np.histogram 用于计算直方图的频率和边界。
hist, bins = np.histogram(image.ravel(), 256, [0, 256])
plt.plot(hist, color='black')
plt.title("Histogram")
plt.xlabel("Pixel Value")
plt.ylabel("Frequency")
plt.show()

# 使用OpenCV的threshold函数进行OTSU阈值化。
# 将计算得到的阈值存储在 ret1 中,OTSU阈值化后的图像存储在 th1 中。
ret1, th1 = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)

# 显示OTSU阈值化后的图像
plt.figure(figsize=(6, 6))
plt.imshow(th1, cmap="gray")
plt.title("OTSU, Threshold: {}".format(ret1))
plt.xticks([]), plt.yticks([])
plt.show()

实验结果:


相关推荐
这张生成的图像能检测吗1 小时前
(论文速读)Fast3R:在一个向前通道中实现1000+图像的3D重建
人工智能·深度学习·计算机视觉·3d重建
心 爱心 爱1 小时前
Shape-Guided Dual-Memory Learning for 3D Anomaly Detection 论文精读
计算机视觉·3d·异常检测·工业异常检测·三维异常检测·多模态工业异常检测·二维异常检测
hixiong1237 小时前
C# OpenCVSharp使用 读光-票证检测矫正模型
人工智能·opencv·c#
沃达德软件8 小时前
智能识别车辆驾驶人特征
人工智能·目标检测·计算机视觉·目标跟踪·视觉检测
曼城的天空是蓝色的9 小时前
GroupNet:基于多尺度神经网络的交互推理轨迹预测
深度学习·计算机视觉
zl_vslam9 小时前
SLAM中的非线性优-3D图优化之轴角在Opencv-PNP中的应用(一)
前端·人工智能·算法·计算机视觉·slam se2 非线性优化
B站_计算机毕业设计之家10 小时前
深度血虚:Django水果检测识别系统 CNN卷积神经网络算法 python语言 计算机 大数据✅
python·深度学习·计算机视觉·信息可视化·分类·cnn·django
这张生成的图像能检测吗10 小时前
(论文速读)LyT-Net:基于YUV变压器的轻量级微光图像增强网络
图像处理·人工智能·计算机视觉·低照度
却道天凉_好个秋15 小时前
OpenCV(十九):图像的加法运算
opencv·计算机视觉
音视频牛哥16 小时前
从 RTSP/RTP/RTCP 到系统级时间闭环:跨平台低延迟RTSP播放架构解析
计算机视觉·机器人·音视频·rtsp播放器·linux rtsp播放器·windows rtsp播放器·安卓播放rtsp流