提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
数字图像处理实验
进行实验2
提示:以下是本篇文章正文内容,下面案例可供参考
一、实验内容
二、实验内容
(1) 读入灰度图像,分析其直方图特征,并使用直方图均衡法对图像进行处理;
(2) 采用灰度变换增强图像;
(3) 使用多幅高斯白噪声图像平均去除高斯白噪声;
(4) 使用中值滤波去除噪声;
(5) 分别用 Laplace 算子和 sobel 算子实现图像的锐化增强。
二、实验代码
1.引入库
代码如下(示例):
# -*- codeing = utf-8 -*-
# @Time : 2022/4/20
# @File : ShiYan2.py
# @Software: PyCharm
import cv2
import matplotlib.pyplot as plt
import matplotlib.image as Img
import numpy as np
import math
from PIL import Image
#(1)读入灰度图像,提取该图像的灰度直方图。
def show(img):
if img.ndim ==2:
plt.imshow(img,cmap='gray')
else:
plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB))
plt.show()
return
def normalization(data):
data = data/np.sum(data)
return data
def salt(image, prob):
output = np.zeros(image.shape, np.uint8)
thres = 1 - prob
for i in range(image.shape[0]):
for j in range(image.shape[1]):
rdn = np.random.random()
if rdn < prob:
output[i][j] = 0
elif rdn > thres:
output[i][j] = 255
else:
output[i][j] = image[i][j]
return output
def My1(img):
#采用柱状图绘制
#读取图像转为灰度
src = np.array(img.convert("L"))
plt.show()
colors =[]
#记录每一个灰度值的像素
if not colors:
for i in range(256):
colors.append(np.sum(src == i))
pixels = [i for i in range(256)]
#转变为概率分布
c = normalization(colors)
#减少运算时间
src_for_hist = src.reshape(1,-1).tolist()
show(src)
plt.figure()
plt.bar(pixels,c)
plt.figure()
plt.hist(src_for_hist,bins=255,density=1)
plt.show()
#方法2直接用函数
hist = cv2.calcHist([img],[0],1,[256],[0,256])
def My2(img):
src = np.