算法题每日一练---第4天:图像模糊问题

简介: 小蓝有一张黑白图像,由 n×m 个像素组成,其中从上到下共 n 行,每行从左到右 m 列。

2.png

一、问题描述


小蓝有一张黑白图像,由 n×m 个像素组成,其中从上到下共 n 行,每行从左到右 m 列。每个像素由一个 0 到 255 之间的灰度值表示。


现在,小蓝准备对图像进行模糊操作,操作的方法为:

对于每个像素,将以它为中心 3×3 区域内的所有像素(可能是 9 个像素或少于 9 个像素)求和后除以这个范围内的像素个数(取下整),得到的值就是模糊后的结果。

请注意每个像素都要用原图中的灰度值计算求和。


二、题目要求


考察

数组,搜索
建议用时10~20min


三、问题分析


使用二维数组存储要输入的像素,对于每一个像素而言,将它3×3 区域内的所有像素值全部相加再除以总数。

这里有一个问题,寻找的时候可能会越界。比如一个第一行的像素值,上面没有值,第一列的像素值,左边没有值。只有中间的才满足3×3。所以,在判断条件的时候要加一个是否超出范围。

定义一个8*2的数组,intc[8][2]={0,1,0,-1,-1,0,1,0,1,1,-1,1,-1,-1,1,-1};作为延伸的方向。在for循环中x=i+c[k][0],y=j+c[k][1],判断上下左右和其它总共8个方向坐标值。对于x,y的范围x>=1&&x<=n&&y>=1&&y<=m;

像素值/像素个数的数值,题目要求向下取整,直接定义int型相除就行。

对于平常的取整问题,可以调用#include里面的floor(向下取整)和ceil(向上取整)。


四、编码实现


#include<iostream>usingnamespacestd;
intmain()
{
inta[105][105],b[105][105];//定义两个二维数组 intc[8][2]={0,1,0,-1,-1,0,1,0,1,1,-1,1,-1,-1,1,-1};//方向数组 intn,m,i,j,k;
cin>>n>>m;//输入数据 for(i=1;i<=n;i++)
    {
for(j=1;j<=m;j++)
        {
cin>>a[i][j];//输入         }
    }
intans,sum=0;//定义,周围的像素和和个数 for(i=1;i<=n;i++)
    {
for(j=1;j<=m;j++)
        {
sum=a[i][j];//像素值初始化 ans=1;//像素个数初始化 for(k=0;k<8;k++)
            {
intx=i+c[k][0];//x坐标 inty=j+c[k][1];//y坐标 if(x>=1&&x<=n&&y>=1&&y<=m)//判断坐标是否在范围                 {
ans++;//像素个数++ sum+=a[x][y];//像素值++                 }
            }
b[i][j]=sum/ans;//更新变量值         }
    }
for(i=1;i<=n;i++)
    {
for(j=1;j<=m;j++)
        {
cout<<b[i][j]<<" ";//输出数组         }cout<<"\n";
    }
return0;
}


五、输出结果


测试用例:给定一个三行四列的数组,输出正确的结果

12.png




相关文章
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
阿里云人工智能平台 PAI 团队发表的图像编辑算法论文在 MM2024 上正式亮相发表。ACM MM(ACM国际多媒体会议)是国际多媒体领域的顶级会议,旨在为研究人员、工程师和行业专家提供一个交流平台,以展示在多媒体领域的最新研究成果、技术进展和应用案例。其主题涵盖了图像处理、视频分析、音频处理、社交媒体和多媒体系统等广泛领域。此次入选标志着阿里云人工智能平台 PAI 在图像编辑算法方面的研究获得了学术界的充分认可。
【MM2024】阿里云 PAI 团队图像编辑算法论文入选 MM2024
|
1月前
|
机器学习/深度学习 人工智能 算法
【MM2024】面向 StableDiffusion 的多目标图像编辑算法 VICTORIA
阿里云人工智能平台 PAI 团队与华南理工大学合作在国际多媒体顶级会议 ACM MM2024 上发表 VICTORIA 算法,这是一种面向 StableDiffusion 的多目标图像编辑算法。VICTORIA 通过文本依存关系来修正图像编辑过程中的交叉注意力图,从而确保关系对象的一致性,支持用户通过修改描述性提示一次性编辑多个目标。
|
1月前
|
算法 Java 程序员
【算法每日一练及解题思路】有n级台阶,一次只能上1级或2级,共有多少种走法?
本文深入解析了“爬楼梯问题”,探讨了递归与迭代两种解法,并提供了Java代码实现。通过分析问题本质,帮助读者理解动态规划技巧,提高解决实际编程问题的能力。关键词:Java, 算法, 动态规划, 爬楼梯问题, 递归, 迭代。
66 0
|
5月前
|
算法 计算机视觉
图像处理之积分图应用四(基于局部均值的图像二值化算法)
图像处理之积分图应用四(基于局部均值的图像二值化算法)
536 0
|
1月前
|
算法 数据安全/隐私保护
织物图像的配准和拼接算法的MATLAB仿真,对比SIFT,SURF以及KAZE
本项目展示了织物瑕疵检测中的图像拼接技术,使用SIFT、SURF和KAZE三种算法。通过MATLAB2022a实现图像匹配、配准和拼接,最终检测并分类织物瑕疵。SIFT算法在不同尺度和旋转下保持不变性;SURF算法提高速度并保持鲁棒性;KAZE算法使用非线性扩散滤波器构建尺度空间,提供更先进的特征描述。展示视频无水印,代码含注释及操作步骤。
|
2月前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
|
4月前
|
机器学习/深度学习 编解码 监控
算法金 | 深度学习图像增强方法总结
**图像增强技术概括** 图像增强聚焦于提升视觉效果和细节,广泛应用于医学、遥感等领域。空间域增强包括直方图均衡化(增强对比度)、对比度拉伸、灰度变换、平滑滤波(均值、中值)和锐化滤波(拉普拉斯、高通)。频率域增强利用傅里叶变换、小波变换,通过高频和低频滤波增强图像特征。现代方法涉及超分辨率重建、深度学习去噪(如CNN、Autoencoder)、图像修复(如GAN)和GANs驱动的多种图像处理任务。
143 14
算法金 | 深度学习图像增强方法总结
|
3月前
|
算法 前端开发 计算机视觉
基于均值坐标(Mean-Value Coordinates)的图像融合算法的优化实现
基于均值坐标(Mean-Value Coordinates)的图像融合算法的优化实现
42 0
|
3月前
|
自然语言处理 并行计算 算法
基于均值坐标(Mean-Value Coordinates)的图像融合算法的具体实现
基于均值坐标(Mean-Value Coordinates)的图像融合算法的具体实现
44 0
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理