图像模糊处理原理与C++实现
好的,下面我将详细介绍图像模糊处理的原理,并给出对应的C++实现代码。
图像模糊处理原理
图像模糊处理(也称为图像平滑)是一种常见的图像处理技术。其核心思想是通过计算某个像素点周围邻域(如3×3区域)的平均值,来替代该像素点的原始值,从而达到模糊效果。具体来说:
-
邻域定义:对于图像矩阵中位置为$(i, j)$的像素,其邻域通常包括:
- 上、下、左、右四个方向的像素:$(i-1,j)$、$(i+1,j)$、$(i,j-1)$、$(i,j+1)$
- 四个对角方向的像素:$(i-1,j-1)$、$(i-1,j+1)$、$(i+1,j-1)$、$(i+1,j+1)$
- 自身:$(i,j)$
-
平均值计算:模糊后的像素值$g(i,j)$计算公式为: $$ g(i,j) = rac{1}{9} sum_{k=i-1}^{i+1} sum_{l=j-1}^{j+1} f(k,l) $$ 其中$f(k,l)$是原图像中位置为$(k,l)$的像素值。
-
边界处理:题目要求图像四周最外侧的像素保持不变(即不做模糊处理)。因此,实际计算时需跳过边界像素($i=0$、$i=n-1$、$j=0$、$j=m-1$)。
C++代码实现
#include
#include
#include
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector> image(n, vector(m));
// 输入图像矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> image[i][j];
}
}
vector> blurred(n, vector(m));
// 复制原图像到blurred矩阵
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
blurred[i][j] = image[i][j];
}
}
// 对非边界像素进行模糊处理
for (int i = 1; i < n - 1; i++) {
for (int j = 1; j < m - 1; j++) {
double sum = 0.0;
// 遍历3×3邻域
for (int di = -1; di <= 1; di++) {
for (int dj = -1; dj <= 1; dj++) {
sum += image[i + di][j + dj];
}
}
// 计算平均值并四舍五入
blurred[i][j] = round(sum / 9.0);
}
}
// 输出结果
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << blurred[i][j];
if (j < m - 1) cout << " ";
}
cout << endl;
}
return 0;
}
http://my.tv.sohu.com/us/442288713/699356631.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjYzMS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356737.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjczNy5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356562.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjU2Mi5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356646.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjY0Ni5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356577.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjU3Ny5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356482.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjQ4Mi5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356755.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1Njc1NS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356761.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1Njc2MS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356591.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjU5MS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356494.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjQ5NC5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356669.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjY2OS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356675.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjY3NS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356908.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjkwOC5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356911.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjkxMS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356916.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjkxNi5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356923.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjkyMy5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356925.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjkyNS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356823.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NjgyMy5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357002.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzAwMi5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357106.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzEwNi5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356844.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1Njg0NC5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356947.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1Njk0Ny5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357117.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzExNy5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356865.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1Njg2NS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357125.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzEyNS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357040.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzA0MC5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357133.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzEzMy5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356971.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1Njk3MS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356976.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1Njk3Ni5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357058.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzA1OC5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357144.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzE0NC5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357150.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzE1MC5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356993.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1Njk5My5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699356995.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1Njk5NS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357162.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzE2Mi5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357080.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzA4MC5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357169.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzE2OS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357221.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzIyMS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357176.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzE3Ni5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357309.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzMwOS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357319.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzMxOS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357196.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzE5Ni5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357412.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzQxMi5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357415.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzQxNS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357332.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzMzMi5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357251.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzI1MS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357431.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzQzMS5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357437.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzQzNy5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357520.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzUyMC5zaHRtbA==.html
http://my.tv.sohu.com/us/442288713/699357264.shtml
https://tv.sohu.com/v/dXMvNDQyMjg4NzEzLzY5OTM1NzI2NC5zaHRtbA==.html
代码说明
- 输入处理:首先读取图像的行数$n$和列数$m$,然后输入$n imes m$的整数矩阵。
- 边界保留:通过循环条件
i < n - 1和j < m - 1跳过最外层像素。 - 邻域求和:内层双重循环遍历每个非边界像素的3×3邻域,累加像素值。
- 四舍五入:使用
round(sum / 9.0)确保结果为整数。 - 输出格式:每行像素值用空格分隔,行末无多余空格。
注意事项
- 边界像素保持原值不变。
- 平均值需四舍五入到整数。
- 输出格式需严格匹配题目要求(空格分隔)。
此方法适用于小规模图像处理(如题目中的$n, m leq 100$)。若需优化大规模图像,可考虑使用更高效的卷积算法。








