本次实验的目标主要是为了掌握图像边缘检测和分割的意义和手段,掌握图像边缘检测和分割的方法及应用并通过实验讨论不同算子对边缘检测效果的影响。
本次实验主要完成了对图像进行Sobel算子边缘检测,对图像进行Prewitt算子边缘检测,对图像进行log算子边缘检测,对图像进行 Canny 算子边缘检测;以及对图像进行固定阈值(分别取了100和150两个阈值)分割,对图像进行迭代阈值分割。并对比分析了不同边缘检测算子的边缘检测效果,不同阈值分割方法的结果。(在考核思考题处还完成了实现Otsu的分割并进行了结果的对比)
代码如下:
from skimage import io,filters,img_as_ubyte, feature import matplotlib.pyplot as plt import cv2 import math import numpy as np # 读取灰度图 img = io.imread('camera.png', as_gray=True) #创建画布 plt.figure(num=1,figsize=(8, 4)) #显示原始图像 plt.subplot(2, 3, 1), plt.imshow(img,cmap='gray'),plt.title('original'), plt.axis('off') # sobel 边缘检测 edges_sobel = filters.sobel(img) #显示sobel检测后的图像 plt.subplot(2, 3, 2), plt.imshow(edges_sobel, cmap='gray'), plt.title('sobel