印度人做网站,网站模板和后台,青岛菜西有做网站的吗,淮北矿业集团工程建设公司网站1. 实验目的
①掌握图像空间滤波的主要原理与方法#xff1b; ②掌握图像边缘提取的主要原理和方法#xff1b; ③了解空间滤波在图像处理和机器学习中的应用。
2. 实验内容
①调用 Matlab / Python OpenCV中的函数#xff0c;实现均值滤波、高斯滤波、中值滤波等。 ②调…1. 实验目的
①掌握图像空间滤波的主要原理与方法 ②掌握图像边缘提取的主要原理和方法 ③了解空间滤波在图像处理和机器学习中的应用。
2. 实验内容
①调用 Matlab / Python OpenCV中的函数实现均值滤波、高斯滤波、中值滤波等。 ②调用 Matlab /Python OpenCV中的函数实现边缘提取Sobel、Robert、Laplacian、Prewitt、Canny等。 ③在Matlab/Python OpenCV中编程实现均值滤波高斯滤波和中值滤波。
3. 实验过程
3.1 图像添加噪声
使用Matlab/Python OpenCV中的加噪声函数分别给同一幅图像中加入不同比例的高斯噪声、椒盐噪声、泊松噪声并在图像中添加直线等干扰。 ① 请填写以下函数对应的参数说明
函数名函数功能参数说明J imnoise(I, ‘gaussian’, m, v)添加高斯噪声I输入图像。 gaussian指定添加高斯噪声。 m高斯分布的均值。 v高斯分布的方差 J imnoise(I, ‘salt pepper’, d)添加椒盐噪声I输入图像。 salt pepper指定添加椒盐噪声。 d控制噪声密度的参数取值范围为0到1之间表示噪声像素占总像素数的比例。 J imnoise(I, ‘poisson’)添加泊松噪声I输入图像。 poisson指定添加泊松噪声。 ② 源代码及实验结果
%实验4-1 为图像添加噪声
% 读取图像
image imread(lena.png);
image_gray rgb2gray(image);% 添加高斯噪声
gaussian_noise_image imnoise(image_gray, gaussian, 0, 0.01);% 添加椒盐噪声
salt_pepper_noise_image imnoise(image_gray, salt pepper, 0.05);%泊松
% 将图像转换为双精度类型
image_gray_double im2double(image_gray);
% 计算泊松噪声参数
lambda 0.1 * mean(image_gray_double(:)); % 泊松分布的平均值
% 生成泊松噪声
poisson_noise poissrnd(lambda, size(image_gray_double));
% 添加泊松噪声
poisson_noise_image_double image_gray_double poisson_noise;
% 将图像还原为8位无符号整数类型
poisson_noise_image im2uint8(poisson_noise_image_double);% 添加直线干扰
line_interference_image insertShape(image_gray, Line, [1 1 size(image_gray,2) size(image_gray,2)], Color, white, LineWidth, 1);% 显示原始图像和添加不同噪声的图像
figure;
subplot(2, 2, 1);
imshow(image_gray);
title(原始图像);
subplot(2, 2, 2);
imshow(gaussian_noise_image);
title(高斯噪声);
subplot(2, 2, 3);
imshow(salt_pepper_noise_image);
title(椒盐噪声);
subplot(2, 2, 4);
imshow(poisson_noise_image);
title(泊松噪声);% 显示添加直线干扰后的图像
figure;
imshow(line_interference_image);
title(直线干扰); ③ 结果对比与分析(观察对比不同类型、参数噪声的特点)
高斯噪声Gaussian Noise 特点高斯噪声是一种服从高斯分布也称为正态分布的随机噪声。它是一种连续性的噪声呈现为图像中的随机亮度变化。 形成原因高斯噪声可以由许多因素引起例如电子设备的电子噪声、图像传感器的固有噪声等。 效果高斯噪声对图像的影响主要体现在图像的平滑程度上它会使图像的细节模糊化。 椒盐噪声Salt and Pepper Noise 特点椒盐噪声是一种随机的、突发的噪声表现为图像中出现亮白或暗黑的孤立像素点。 形成原因椒盐噪声可能是因为信号损坏或传输错误导致像素值发生突变引起的。 效果椒盐噪声会在图像中引入明显的孤立像素点使图像出现突然的亮点或暗点。 泊松噪声Poisson Noise 特点泊松噪声是由于光子计数的随机性导致的一种噪声。它在低光条件下的图像中更为常见。 形成原因泊松噪声主要是由于光照条件下的随机光子计数引起的例如低照度图像中的光子计数变化。 效果泊松噪声会导致图像的亮度变化和细节的模糊尤其在低光条件下会更加明显。
3.2 图像平滑
使用 Matlab/Python OpenCV中的相关函数对3.1中加噪的图像进行均值滤波、高斯滤波和中值滤波。 ① 请填写以下函数对应的参数说明 ② 源代码及实验结果(添加必要注释)
%实验4-2 图像去除噪声实验
% 读取图像
image imread(lena.png);
image_gray rgb2gray(image);% 添加高斯噪声
gaussian_noise_image imnoise(image_gray, gaussian, 0, 0.01);% 中值滤波
median_filtered medfilt2(gaussian_noise_image, [3 3]);
% 均值滤波
mean_filtered imfilter(gaussian_noise_image, fspecial(average, [3 3]));% 高斯滤波
gaussian_filtered imfilter(gaussian_noise_image, fspecial(gaussian, [4 4], 2));% 显示原始图像和滤波后的图像
figure;
subplot(2, 2, 1), imshow(gaussian_noise_image), title(原始图像);
subplot(2, 2, 2), imshow(mean_filtered), title(均值滤波);
subplot(2, 2, 3), imshow(gaussian_filtered), title(高斯滤波);
subplot(2, 2, 4), imshow(median_filtered), title(中值滤波); ③ 实验结果对比与分析 对比不同类型和尺寸的滤波器的实验结果分析原因并总结对于含有不同噪声图像如何选择合适的滤波器可以达到较好的去噪和平滑效果。 对添加了高斯噪声的图像进行消噪处理不同的消噪方法效果不一。应针对不同噪声选择不同的滤波器。
3.3 百分比滤波
使用 Matlab/Python OpenCV中的相关函数对原图和加噪的图像分别进行中值滤波、最大值滤波和最小值滤波。 ① 请填写使用到的函数以及参数说明 ② 源代码及实验结果(添加必要注释)
%实验4—3 对图像进行中值滤波、最大值滤波和最小值滤波。
% 读取原图像
image imread(lena.png);
original_image rgb2gray(image);
% 生成加噪图像这里假设添加了椒盐噪声
noisy_image imnoise(original_image, salt pepper, 0.1);% 中值滤波
median_filtered_original medfilt2(original_image, [3 3]);
median_filtered_noisy medfilt2(noisy_image, [3 3]);% 最大值滤波
max_filtered_original ordfilt2(original_image, 9, ones(3, 3));
max_filtered_noisy ordfilt2(noisy_image, 9, ones(3, 3));% 最小值滤波
min_filtered_original ordfilt2(original_image, 1, ones(3, 3));
min_filtered_noisy ordfilt2(noisy_image, 1, ones(3, 3));% 显示原始图像和滤波后的图像
figure;
subplot(3, 2, 1), imshow(original_image), title(原始图像);
subplot(3, 2, 2), imshow(median_filtered_original), title(中值滤波原始图像);
subplot(3, 2, 3), imshow(original_image), title(原始图像);
subplot(3, 2, 4), imshow(min_filtered_original), title(最小值滤波原始图像);
subplot(3, 2, 5), imshow(original_image), title(原始图像);
subplot(3, 2, 6), imshow(max_filtered_original), title(最大值滤波原始图像);figure;
subplot(3, 2, 1), imshow(noisy_image), title(加噪图像);
subplot(3, 2, 2), imshow(max_filtered_noisy), title(最大值滤波加噪图像);
subplot(3, 2, 3), imshow(noisy_image), title(加噪图像);
subplot(3, 2, 4), imshow(median_filtered_noisy), title(中值滤波加噪图像);
subplot(3, 2, 5), imshow(noisy_image), title(加噪图像);
subplot(3, 2, 6), imshow(min_filtered_noisy), title(最小值滤波加噪图像); ③ 实验结果对比与分析 观察实验结果分析原因思考中值滤波、最大值滤波和最小值滤波可能的应用场景。 1.中值滤波Median Filter 中值滤波主要用于去除图像中的椒盐噪声Salt-and-Pepper Noise。当图像受到高斯模糊或摄像机移动等因素的影响时可能会出现椒盐噪声。中值滤波通过取像素周围邻域内的中值来消除噪声保留图像的边缘信息。因此适用于去除高斯噪声或降低图像噪声的场景。
2.最大值滤波Maximum Filter 最大值滤波主要用于增强图像的对比度。当图像的亮度分布不均匀时可以通过最大值滤波来突出图像中的最大亮度值使得图像的整体亮度更加均匀。因此适用于调整光照不均或需要增强图像对比度的场景。
3.最小值滤波Minimum Filter 最小值滤波与最大值滤波相反它主要用于减弱图像的对比度。当图像的亮度分布不均匀时可以通过最小值滤波来突出图像中的最小亮度值使得图像的整体亮度更加均匀。因此适用于调整光照不均或需要减弱图像对比度的场景。
3.4 边缘提取和图像锐化
使用 Matlab / Python OpenCV中的边缘提取函数分别提取图像的Sobel、Robert、Laplacian、Prewitt、Canny边缘。 ① 请填写使用到的函数以及参数说明
② 边缘提取 源代码及实验结果(源代码添加必要注释结果展示使用不同边缘提取算子的效果)
% 实验4—4 图像的边缘提取
% 读取图像
image imread(lena.png);% 将图像转换为灰度图像如果原始图像是彩色图像
gray_image rgb2gray(image);% 使用Sobel算子进行边缘提取
sobel_edge edge(gray_image, Sobel);% 使用Robert算子进行边缘提取(当前版本不支持该算子)
%robert_edge edge(gray_image, Robert);% 使用Laplacian算子进行边缘提取
laplacian_edge edge(gray_image, log);% 使用Prewitt算子进行边缘提取
prewitt_edge edge(gray_image, Prewitt);% 使用Canny算子进行边缘提取
canny_edge edge(gray_image, Canny);% 显示原始图像和边缘提取结果
subplot(2, 3, 1), imshow(image), title(Original Image);
subplot(2, 3, 2), imshow(sobel_edge), title(Sobel Edge);
%subplot(2, 3, 3), imshow(robert_edge), title(Robert Edge);
subplot(2, 3, 4), imshow(laplacian_edge), title(Laplacian Edge);
subplot(2, 3, 5), imshow(prewitt_edge), title(Prewitt Edge);
subplot(2, 3, 6), imshow(canny_edge), title(Canny Edge);③ 图像锐化 源代码及实验结果(源代码添加必要注释结果展示使用不同边缘提取算子的效果)使用边缘提取的结果对图像进行锐化。
%实验4—5 图像的锐化
% 读取图像
image imread(lena.png);% 将图像转换为灰度图像如果原始图像是彩色图像
gray_image rgb2gray(image);% 定义锐化滤波器
sharp_filter [0 -1 0; -1 5 -1; 0 -1 0];% 应用锐化滤波器
sharpened_image imfilter(gray_image, sharp_filter);% 调整锐化结果的对比度
sharpened_image imadjust(sharpened_image);% 显示原始图像和锐化结果
subplot(1, 2, 1), imshow(gray_image), title(原始图像);
subplot(1, 2, 2), imshow(sharpened_image), title(锐化图像);④ 实验结果对比与分析 对比实验结果结果分析原因并总结不同边缘提取算法的特点和适用情况。 Sobel算子 特点Sobel算子使用一阶导数来检测图像中的边缘对噪声有一定的抵抗能力。它分别计算水平和垂直方向的梯度并将它们合并成一个梯度值。 适用情况Sobel算子适用于检测较明显的边缘尤其是具有明显方向性的边缘如图像中的边界和轮廓。 Prewitt算子 特点Prewitt算子与Sobel算子类似也使用一阶导数来检测图像中的边缘。它分别计算水平和垂直方向的梯度并将它们合并成一个梯度值。 适用情况Prewitt算子适用于检测边缘尤其是在具有明显方向性的边缘的情况下。 Laplacian算子 特点Laplacian算子使用二阶导数来检测图像中的边缘。它对边缘的精确位置和方向有更好的响应并且可以检测到更细微的边缘变化。 适用情况Laplacian算子适用于检测细微的边缘和纹理变化但对噪声比较敏感。 Canny算子 特点Canny算子是一种多阶段的边缘检测算法具有很好的性能。它首先使用高斯滤波器进行平滑处理然后计算梯度然后通过非极大值抑制和双阈值处理来提取边缘。 适用情况Canny算子适用于需要高质量边缘检测的情况对噪声有较好的抵抗能力并且可以调整阈值以控制检测到的边缘数量。
3.5 自定义函数实现图像滤波
⑴不调用Matlab / OpenCV中的函数编程实现图像的均值滤波高斯滤波和中值滤波。 ⑵与3.2、3.3的实验结果进行对比观察实验结果是否相同分析原因并改进、优化所编写程序。 ⑶将所编写程序段封装为自定义函数。 ① 均值滤波 源代码及实验结果 (添加必要注释)
def mean_filter(image, kernel_size):均值滤波函数:param image: 输入图像:param kernel_size: 滤波器大小:return: 滤波后的图像width, height image.shapefiltered_image np.zeros_like(image)padding kernel_size // 2padded_image np.pad(image, ((padding, padding), (padding, padding)), modeconstant)for i in range(padding, width padding):for j in range(padding, height padding):neighborhood padded_image[i - padding:i padding 1, j - padding:j padding 1]filtered_image[i - padding, j - padding] np.mean(neighborhood)return filtered_image
② 高斯滤波
def gaussian_filter(image, kernel_size, sigma):高斯滤波函数:param image: 输入图像:param kernel_size: 滤波器大小:param sigma: 高斯核的标准差:return: 滤波后的图像width, height image.shapefiltered_image np.zeros_like(image)padding kernel_size // 2padded_image np.pad(image, ((padding, padding), (padding, padding)), modeconstant)kernel gaussian_kernel(kernel_size, sigma)for i in range(padding, width padding):for j in range(padding, height padding):neighborhood padded_image[i - padding:i padding 1, j - padding:j padding 1]filtered_image[i - padding, j - padding] np.sum(neighborhood * kernel)return filtered_image
③ 中值滤波
def median_filter(image, kernel_size):中值滤波函数:param image: 输入图像:param kernel_size: 滤波器大小:return: 滤波后的图像width, height image.shapefiltered_image np.zeros_like(image)padding kernel_size // 2padded_image np.pad(image, ((padding, padding), (padding, padding)), modeconstant)for i in range(padding, width padding):for j in range(padding, height padding):neighborhood padded_image[i - padding:i padding 1, j - padding:j padding 1]filtered_image[i - padding, j - padding] np.median(neighborhood)return filtered_image
4. 实验小结
①在PhotoShop中找一找有哪些功能是通过图像空间滤波实现的。 答模糊/平滑滤波通过应用均值滤波、高斯滤波或其他模糊滤波器来减少图像的细节和噪点从而使图像更加平滑。 锐化滤波通过应用锐化滤波器如拉普拉斯滤波器来增强图像的边缘和细节使图像更加清晰和锐利。 边缘检测通过应用边缘检测滤波器如Sobel、Prewitt或Canny来检测图像中的边缘和轮廓以突出图像中的边界信息。 噪点去除通过应用中值滤波器或其他噪点去除滤波器来减少图像中的椒盐噪点、高斯噪点或其他类型的噪点。 高动态范围HDR合成通过应用图像空间滤波器和曝光调整来合成具有高动态范围的图像以获得更广泛的亮度范围和更丰富的细节。 美颜和皮肤磨皮通过应用柔化和模糊滤波器来减少皮肤上的细纹和瑕疵实现美颜和皮肤磨皮效果。 ②分析和总结3.2、3.3、3.4的实验结果能够得到哪些启发或结论 答针对不同的图像和预期效果可以选择不同的处理方案 ③为了方便复用3.5的自定义函数应该怎样设计和封装更加合理你还能想到哪些进一步改进和优化的方法 答考虑多种不同的图像的滤波方案同时设计良好的滤波思路提高程序的鲁棒性。 ④根据实验内容和结果并查找相关资料想一想图像卷积在数字图像处理、机器学习、深度学习中有哪些应用 答图像滤波图像卷积可以用于应用各种滤波器来实现图像平滑、边缘增强、噪点去除等操作。常见的滤波器包括均值滤波、高斯滤波、中值滤波等。 特征提取在机器学习和计算机视觉任务中图像卷积被广泛用于提取图像的特征。通过应用不同的卷积核可以捕捉到图像中的边缘、纹理、形状等特征为后续的分类、目标检测、分割等任务提供输入。 目标检测在目标检测任务中卷积神经网络CNN是一种常用的深度学习模型它利用图像卷积层来提取图像特征并通过后续的分类和回归层来识别图像中的目标物体。 图像分割卷积神经网络也被广泛用于图像分割任务通过对图像进行卷积操作将图像划分为不同的区域或像素并将每个区域或像素分配给特定的类别。 图像超分辨率图像卷积在图像超分辨率重建中有应用。通过将低分辨率图像进行卷积和上采样操作可以生成高分辨率的图像。 图像风格转换卷积神经网络可以通过卷积操作来学习不同风格图像之间的特征表示从而实现图像风格的转换。 图像增强卷积神经网络可以通过卷积操作来学习图像增强的映射函数从而改善图像的质量、对比度或颜色等方面。