C++实现降低一幅图像的空间分辨率
本人在学习图像处理时使用vs2017中MFC框架编写了相关的图像处理程序,使用的编程语言是c++,而且没有使用Openvc。关于MFC框架的使用请在网上搜索相关视频或者博客学习,下面给出MFC框架,基本的框架已经搭建好,只需要自己添加程序。
附上框架百度云盘资源:
链接:https://pan.baidu.com/s/1naem-uRNQLVhfF-FwY4kmA
注意:使用VS2017打开的时候平台工具集等提示均选择 “无升级”,当然了,如果直接选择默认的选项然后升级也可以,如果出现平台工具集未更新的问题,请百度解决。
话不多说上代码:
1.分辨率降低一半的源程序
//降质两倍
void CImage_ProcessingView::On2times()
{
// TODO: 在此添加命令处理程序代码
if (m_Image.IsNull()) return;//判断图像是否为空,如果对空图像进行操作会出现未知的错误
int w = m_Image.GetWidth();
int h = m_Image.GetHeight();
for(int m = 0;m<h/2;++m)//计算降质后图像大小
for (int n = 0; n < w / 2; ++n)
{
//取原图上2*2方阵的左上角像素赋值给降质图像的每个像素
for (int j = 2 * m; j < (2 * m + 2); j++)
{
for (int k = 2 * n; k < (2 * n + 2); k++)
{if (j == 2 * m && k == 2 * n) //其余像素全部设置为白色
{
m_Image.m_pBits[0][m][n] = m_Image.m_pBits[0][j][k];
m_Image.m_pBits[1][m][n] = m_Image.m_pBits[1][j][k];
m_Image.m_pBits[2][m][n] = m_Image.m_pBits[2][j][k];if (k >= h / 2 || j >= w / 2)
{
m_Image.m_pBits[0][j][k] = 255;
m_Image.m_pBits[1][j][k] = 255;
m_Image.m_pBits[2][j][k] = 255;
}
}
else
{
m_Image.m_pBits[0][j][k] = 255;
m_Image.m_pBits[1][j][k] = 255;
m_Image.m_pBits[2][j][k] = 255;
}
}
}
//取原图上2*2方阵的左上角像素赋值给降质图像的每个像素
}
Invalidate(1); //ONDRAW会绘制图像
}
2.处理结果
原图
降质为1/2
降质为1/16
为了便于比较,三幅图像的对话框全部拖动到和原图大小一样大。
3.存在的一点小问题,这样的处理方法会出现非长宽的图像会处理不全面,存在以下地方没有设置为白色,效果不好看。解决的方法是:先计算出应该隔几个像素采样一个,程序中只要按照这样的顺序进行采样就可以,请读者自己实现。
4.下面说一下在框架上添加要实现的图像处理代码的步骤。
1.添加菜单选项
2.修改属性
3.修改ID,使用英文修改,而且要做到命名可以解释对应的作用
4.添加消息处理函数
添加好程序后直接回调转到代码段,在对应的位置添加代码即可。
C++实现降低一幅图像的空间分辨率相关推荐
- 图像的空间分辨率和幅度分辨率
图像的空间分辨率 是每英寸图像内,有多少个像素,分辨率的单位为PPI(Pixels Per Inch),通常叫做:像素每英寸 采样频率越高空间分配率就越大 幅度分辨率 是指在幅度值是离散的时候,每个像 ...
- 遥感图像的空间分辨率,光谱分辨率等
模数转换 模拟图像向数字图像的转换就叫做模数转换. 模数转换由采样和量化2步组成,采样是空间位置的离散化,量化是电磁辐射能量的离散化.下面用一幅图像来展示这个过程. 正因为遥感图像也是一种数字图像,所 ...
- 遥感图像的空间分辨率、光谱分辨率、时间分辨率的含义
空间分辨率 像素单元代表的地面空间范围大小,类比于比例尺. 时间分辨率 重访周期:重复拍摄某一区域所用的时间间隔. 光谱分辨率 接受目标反射回来的波长中,能分辨的最小波长的间隔,间隔越小,分辨率越高.
- 机器学习笔记~图像的空间分辨率
In terms of digital images, spatial resolution refers to the number of pixels utilized in constructi ...
- 数字图像处理(4): 遥感影像中 光谱分辨率、空间分辨率、时间分辨率、全色图像、多光谱图像、高光谱图像 的区别
目录 1 光谱分辨率.空间分辨率.时间分辨率 2 全色图像.多光谱图像.高光谱图像 2.1 全色图像 2.2 多光谱图像 2.3 高光谱图像 参考资料 1 光谱分辨率.空间分辨率.时间分辨率 遥感(R ...
- 数字图像处理学习笔记(三)——空间分辨率和灰度分辨率、等偏爱曲线
数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声.增强.复原.分割.提取特征等处理的方法和技术.本专栏将以学习笔记形式对数字图像处理的重点基础知识进行总结 ...
- 微信团队分享:视频图像的超分辨率技术原理和应用场景
为什么80%的码农都做不了架构师?>>> 本文来自微信多媒体团队高欣玮的技术分享. 1.前言 图像和视频通常包含着大量的视觉信息,且视觉信息本身具有直观高效的描述能力,所以随着 ...
- OpenCV之core 模块. 核心功能(1)Mat - 基本图像容器 OpenCV如何扫描图像、利用查找表和计时 矩阵的掩码操作 使用OpenCV对两幅图像求和(求混合(blending))
Mat - 基本图像容器 目的 从真实世界中获取数字图像有很多方法,比如数码相机.扫描仪.CT或者磁共振成像.无论哪种方法,我们(人类)看到的是图像,而让数字设备来"看"的时候,则 ...
- 第2章 Python 数字图像处理(DIP) --数字图像基础2 - 图像感知要素 - 图像取样和量化 - 空间分辨率和灰度分辨率
目录 图像感知与获取 一个简单的成像模型 图像取样和量化 空间分辨率和灰度分辨率 图像感知与获取 一个简单的成像模型 我们用形如 f(x,y)f(x,y)f(x,y) 的二维函数来表示图像.在空间坐标 ...
最新文章
- ijcai statistics
- 解决maven项目Cannot change version of project facet Dynamic web module to 3.0
- 去别人共享目录下拷贝东西,怎么进入别人的机器
- 谷歌浏览器如何抓取grpc_前5名:Google分享gRPC,更好的开源UX等
- js面试题:创建一个json对象people,并追加属性:姓名、性别、年龄,追加run方法...
- 在ORACLE產生001,002的流水號
- Eclipse中配置约束(DTD,XSD)
- 免费素材下载:一套超棒的免费UI套件
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_16_常用的函数式接口_Function接口中的方法Apply...
- jeecg框架表格合计解决方案
- 中国各个省市区(县)级联数据
- ThoughtWorks面试经历——武汉java开发
- spring boot actuator和K8s容器健康检查
- [JZOJ 5804] 简单的序列
- java中Switch语句的用法
- Gitlab回滚到上次提交
- Docker搭建STF
- html静态商城网页制作 基于HTML+CSS+JavaScript在线服装商城店铺商城设计毕业论文源码
- Archlinux下的优秀软件推荐
- webgoat靶场复现