实验4 图像空间滤波

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)), mode='constant')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)), mode='constant')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)), mode='constant')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)是一种常用的深度学习模型,它利用图像卷积层来提取图像特征,并通过后续的分类和回归层来识别图像中的目标物体。
图像分割:卷积神经网络也被广泛用于图像分割任务,通过对图像进行卷积操作,将图像划分为不同的区域或像素,并将每个区域或像素分配给特定的类别。
图像超分辨率:图像卷积在图像超分辨率重建中有应用。通过将低分辨率图像进行卷积和上采样操作,可以生成高分辨率的图像。
图像风格转换:卷积神经网络可以通过卷积操作来学习不同风格图像之间的特征表示,从而实现图像风格的转换。
图像增强:卷积神经网络可以通过卷积操作来学习图像增强的映射函数,从而改善图像的质量、对比度或颜色等方面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/38062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【操作系统期末速成】 EP02 | 学习笔记(基于五道口一只鸭)

文章目录 一、前言🚀🚀🚀二、正文:☀️☀️☀️2.1 考点二:操作系统的功能及接口2.2 考点三:操作系统的发展及分类2.3 考点四:操作系统的运行环境(重要) 一、前言&#x…

从零开始三天学会微信小程序开发(三)

看到不少入门的小程序开发者不断的问重复性的问题,我们从实战角度开发了这个课程,希望能够帮助大家了解小程序开发。 课程分三天: 第一天:微信小程序开发入门第二天:给小程序接入云端数据第三天:完善我的…

MySQL高级-MVCC- readview介绍

文章目录 1、介绍2、ReadView中包含了四个核心字段:3、版本链数据的访问规则:4、不同的隔离级别,生成ReadView的时机不同: 1、介绍 ReadView(读视图)是 快照读 SQL执行时MVCC提取数据的依据,记录…

【计算机组成原理实验】——运算器组成实验

计组TEC4实验——运算器组成实验 1. 实验目的 (1)掌握算术逻辑运算加、减、乘、与的工作原理。 (2) 熟悉简单运算器的数据传送通路。 (3) 验证实验台运算器的8位加、减、与、直通功能。 (4) 验证实验台的4位乘4位功能。 (5) 按给定数据,完成几种指…

SerDes介绍以及原语使用介绍(4)ISERDESE2原语仿真

文章目录 前言一、iserdese2_module模块二、oserdese2_module模块三、顶层模块四、仿真结果分析 前言 上文详细介绍了ISERDESE2原语的使用,本文根据仿真对ISERDESE2原语的使用进一步加深印象。在仿真时,与OSERDESE进行回环。 一、iserdese2_module模块…

昇思MindSpore学习笔记4--数据集 Dataset

昇思MindSpore学习笔记4--数据集 Dataset 摘要: 昇思MindSpore数据集Dataset的加载、数据集常见操作和自定义数据集方法。 一、数据集 Dataset概念 MindSpore数据引擎基于Pipeline 数据预处理相关模块: 数据集Dataset加载原始数据,支持文本…

大创项目推荐 题目:基于机器视觉的图像矫正 (以车牌识别为例) - 图像畸变校正

文章目录 0 简介1 思路简介1.1 车牌定位1.2 畸变校正 2 代码实现2.1 车牌定位2.1.1 通过颜色特征选定可疑区域2.1.2 寻找车牌外围轮廓2.1.3 车牌区域定位 2.2 畸变校正2.2.1 畸变后车牌顶点定位2.2.2 校正 7 最后 0 简介 🔥 优质竞赛项目系列,今天要分享…

Leetcode3192. 使二进制数组全部等于 1 的最少操作次数 II

Every day a Leetcode 题目来源:3192. 使二进制数组全部等于 1 的最少操作次数 II 解法1:遍历 由于 nums[i] 会被其左侧元素的操作影响,所以我们先从最左边的 nums[0] 开始思考。 分类讨论: 如果 nums[0]1,无需反…

amis-editor 注册自定义组件

建议先将amis文档从头到尾,仔细看一遍。 参考:amis - 低代码前端框架 amis 的渲染过程是将 json 转成对应的 React 组件。先通过 json 的 type 找到对应的 Component,然后把其他属性作为 props 传递过去完成渲染。 import * as React from …

flex讲解

随着前端技术的不断发展和更新,flex布局成为前端布局的主流。但是仍然有很多前端新手搞不懂flex到底怎么用!!!今天我们就来好好讲讲flex布局 老规矩先上定义 什么是flex布局 布局的传统解决方案,基于盒状模型&#x…

郑州高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

随着制造业的转型升级,智能化、信息化已成为制造业发展的必然趋势。数字孪生技术作为智能制造领域的关键技术之一,它通过构建与实体系统相对应的虚拟模型,实现对实体系统的实时监测、预测和优化,为制造业的智能化、信息化提供了强…

LitelDE安装---附带每一步截图以及测试

LiteIDE LiteIDE 是一款专为Go语言开发而设计的开源、跨平台、轻量级集成开发环境(IDE),基于 Qt 开发(一个跨平台的 C 框架),支持 Windows、Linux 和 Mac OS X 平台。LiteIDE 的第一个版本发布于 2011 年 …

PTA-线性表实验(JAVA)

题目1:Josephus环的问题及算法 【实验内容】 编程实现如下功能: 题意说明:古代某法官要判决n个犯人的死刑,他有一条荒唐的法律,将犯人站成一个圆圈,从第start个犯人开始数起,每数到第distance的…

使用Dockerfile构建镜像 使用docker-compose 一键部署IM项目

本文讲解:使用Dockerfile构建镜像 & 使用docker-compose 一键部署IM项目。 im项目地址:xzll-im ,欢迎志同道合的开发者 一起 维护,学习,欢迎star 😄 1、Dockerfile编写与镜像构建&容器运行 Dockerf…

Nginx和CDN运用

一.Web缓存代理 1.工作机制 代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。将获得的网页数据(静态Web元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。 2.代理服务器的概念 代理服务器是一个位…

k8s token加新节点

在 master 节点执行 kubeadm token create --print-join-command得到token和cert,这两个参数在2个小时内可以重复使用,超过以后就得再次生成 kubeadm join apiserver.k8s.com --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha…

【入门】5分钟了解卷积神经网络CNN是什么

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、卷积神经网络的结构1.1.卷积与池化的作用2.2.全连接层的作用 二、卷积神经网络的运算2.1.卷积层的运算2.2.池化的运算2.3.全连接层运算 三、pytorch实现一个CNN例子3.1.模型的搭建3.2.CNN完整训练代码 CNN神…

【Dison夏令营 Day 04】如何用 Python 编写简单的数字猜谜游戏代码

上个周末,我整理了一份可以用 Python 编写的游戏列表。但为什么呢? 如果您是 Python 程序员初学者,编写有趣的游戏可以帮助您更快更好地学习 Python 语言,而不会被语法之类的东西所困扰。我在学习 Python 的时候曾制作过一些这样…

Hadoop-03-Hadoop集群 免密登录 超详细 3节点公网云 分发脚本 踩坑笔记 SSH免密 服务互通 集群搭建 开启ROOT

章节内容 上一节完成: HDFS集群XML的配置MapReduce集群XML的配置Yarn集群XML的配置统一权限DNS统一配置 背景介绍 这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。 之前已经在 VM 虚拟机上搭建过一次&…

短视频矩阵系统搭建APP源码开发

前言 短视频矩阵系统不仅有助于提升品牌影响力和营销效率,还能帮助企业更精准地触达目标受众,增强用户互动,并利用数据分析来持续优化营销策略。 一、短视频矩阵系统是什么? 短视频矩阵系统是一种通过多个短视频平台进行内容创作…