算法题每日一练---第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




相关文章
|
2月前
|
机器学习/深度学习 算法 数据库
KNN和SVM实现对LFW人像图像数据集的分类应用
KNN和SVM实现对LFW人像图像数据集的分类应用
36 0
|
5月前
|
算法 数据挖掘 计算机视觉
Python利用K-Means算法进行图像聚类分割实战(超详细 附源码)
Python利用K-Means算法进行图像聚类分割实战(超详细 附源码)
166 0
|
5月前
|
算法 计算机视觉 异构计算
基于FPGA的图像形态学腐蚀算法实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像形态学腐蚀算法实现,包括tb测试文件和MATLAB辅助验证
|
1天前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到&quot;result.txt&quot;以供MATLAB显示图像分割效果。
|
14天前
|
文字识别 算法 计算机视觉
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
21 0
|
5月前
|
机器学习/深度学习 文字识别 算法
[Halcon&图像] 缺陷检测的一些思路、常规检测算法
[Halcon&图像] 缺陷检测的一些思路、常规检测算法
349 1
|
2月前
|
存储 算法 算法框架/工具
基于HSV色度空间的图像深度信息提取算法FPGA实现,包含testbench和MATLAB辅助验证程序
该文档介绍了在一个FPGA项目中使用HSV色彩模型提取图像深度信息的过程。通过将RGB图像转换为HSV,然后利用明度与深度的非线性映射估计深度。软件版本为Vivado 2019.2和MATLAB 2022a。算法在MATLAB中进行了对比测试,并在FPGA上实现了优化,包括流水线并行处理和查找表技术。提供的Verilog代码段展示了RGB到灰度的转换。实验结果和核心程序的图片未显示。
|
2月前
|
机器学习/深度学习 算法 计算机视觉
利用深度学习算法实现图像风格转换技术探究
本文将通过深入分析深度学习算法在图像处理领域的应用,探讨如何利用神经网络实现图像风格转换技术。通过研究不同风格迁移算法的原理和实现方式,揭示其在艺术创作、图像编辑等领域的潜在应用和挑战。
|
2月前
|
编解码 算法 计算机视觉
基于FPGA的图像最近邻插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像最近邻插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
|
3月前
|
机器学习/深度学习 算法 搜索推荐
【实操】数据扩增:Retinex算法用于图像颜色恢复和对比度增强
【实操】数据扩增:Retinex算法用于图像颜色恢复和对比度增强
34 0
【实操】数据扩增:Retinex算法用于图像颜色恢复和对比度增强