实验六 图像分割与特征分析

数字图像处理实验记录

实验六 图像分割与特征分析

对噪声图像做出边缘检测,比较各算子对噪声的敏感性。
实验步骤:对原图像添加高斯噪声,分别对原图和处理后的图像进行边缘检测。
python代码见附录

实验结果:
在这里插入图片描述
附录:
Python代码:

import numpy as np
from matplotlib import pyplot as plt

#图像读入
img = cv2.imread("Jellyfish.jpg",0)

#Canny边缘检测原图像
canny_origin_img = cv2.Canny(img,100,200)

#Sobel边缘检测原图像
sobelx = cv2.Sobel(img, cv2.CV_64F, 1, 0)
sobely = cv2.Sobel(img, cv2.CV_64F, 0, 1)
sobelx = cv2.convertScaleAbs(sobelx)
sobely = cv2.convertScaleAbs(sobely)
sobel_combined_origin = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)

#Laplace边缘检测原图像
tmp_img = cv2.Laplacian(img,cv2.CV_64F)
Laplace_origin_img = cv2.convertScaleAbs(tmp_img)

#对原图像添加 Gauss noise

mean = 0    #选取均值为
var = 0.001       #方差为0.005
img = np.array(img/255,dtype=float)
noise = np.random.normal(mean,var ** 0.5,img.shape)
Gauss_noise_img = img + noise
if Gauss_noise_img.min() < 0:
    low_clip = -1
else:
    low_clip = 0
noisy_img = np.clip(Gauss_noise_img,low_clip,1.0)
noisy_img = np.uint8(Gauss_noise_img*255)


#Sobel边缘检测噪声图像
sobelx = cv2.Sobel(noisy_img, cv2.CV_64F, 1, 0)
sobely = cv2.Sobel(noisy_img, cv2.CV_64F, 0, 1)
sobelx = cv2.convertScaleAbs(sobelx)
sobely = cv2.convertScaleAbs(sobely)
sobel_combined_noisy = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0)

#Laplace边缘检测噪声图像
tmp_img = cv2.Laplacian(noisy_img,cv2.CV_64F)
Laplace_noisy_img = cv2.convertScaleAbs(tmp_img)

#Canny边缘检测噪声图像
canny_noisy_img = cv2.Canny(noisy_img,100,200)


#图像输出

#原图像的边缘检测
#cv2.imshow("original image",img)
#cv2.imshow("Canny",canny_origin_img)
#cv2.imshow("Laplace",Laplace_origin_img)
#cv2.imshow("Sobel",sobel_combined_origin)

#加噪后的边缘检测
cv2.imshow("image",img)
cv2.imshow("Gauss noised image",noisy_img)
cv2.imshow("Canny Edge Detector,noisy image",canny_noisy_img)
cv2.imshow("Laplace Edge Detector,noisy image",Laplace_noisy_img)
cv2.imshow("Sobel Edge Detector,noisy image",sobel_combined_noisy)

#等待关闭
cv2.waitKey(0)
cv2.destroyAllWindows()

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值