当前位置: 首页 > news >正文

DSP C6000教学实验箱操作教程_数字图像处理:5-3 图像缩放

一、实验目的

学习图像缩放的原理,掌握图像的读取方法,并实现图像缩放。

二、实验原理

图像缩放
在计算机图像处理和计算机图形学中,图像缩放是指对数字图像的大小进行调整的过程。图像缩放是一种非平滑的过程,需要在处理效率以及结果的平滑度和清晰度上做一个权衡。当一个图像的大小增加之后,组成图像的像素的可见度将会变得更高,从而使得图像表现得“软”。相反地,缩小一个图像将会增强它的平滑度和清晰度。

图像缩放包含图像缩小和图像放大。常用的图像缩放算法有:最邻近插值、双线性内插值和双三次插值法。

最邻近插值法

在 DSP 平台上,有限的高速存储资源限制了这些算法效率的直接发挥,需要针对算法及 DSP 平台的性能结构特点进行高效的数据调度。最邻近插值是最为简单的插值方法,就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色。在图像中最小的单位就是单个像素,但是在旋转个缩放的过程中如果出现了小数,那么就对这个浮点坐标进行简单的取整,得到一个整数型坐标,这个整数型坐标对应的像素值就是目标像素的像素值。取整的方式就是:取浮点坐标最邻近的左上角的整数点。

优点:简单且直观,速度也最快,计算简单,硬件实现所需资源少。

缺点:得到的图像质量低,特别是放大低质量的图像可能产生明显锯齿。

最邻近插值的的思想很简单,就是把这个非整数坐标作一个四舍五入,取最近的整数点坐标处的点的颜色。

image.png

将一个图像放大 N 倍,假设目标图像中(x,y)坐标对应的源图像坐标为(x_0,y_0)。

则可得到以下公式:

image.png

例如:将一个 33 的图像放大为 44 的图像,就相当于放大了 4/3 倍,则目标图像中

(1,3)坐标对应的源图像坐标为(1,2)。

image.png

程序流程设计

程序流程设计中首先要读取工程目录下的BMP图像,接着进行缩放处理,最后保存缩放处理后的图像。

image.png

三、操作现象

本实验所需硬件为实验板、仿真器、LCD和电源。

image.png

硬件连接

(1)连接仿真器和电脑的USB接口,

(2)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件操作

导入工程,选择Demo文件夹下的对应工程

编译工程,生成可执行文件

将CCS连接实验箱并加载程序

程序加载完成后点击运行程序

运行程序后,CCS的Console窗口会打印相关信息。

稍等片刻后,图像处理完成,程序执行完成后会在断点处停下。

可以通过 CCS 的图像显示窗口查看处理前后的图片对比。

点击工具,选择图像分析工具。在弹出的 Image 窗口中右击鼠标,在弹出的菜单栏中选择"Import Properties",选择工程目录下的 in.txt 配置文件,选择后等待图片加载,加载完成后显示原图片。

txt 配置文件是提前配置好的图像属性,在 Properties 属性可看到 in.txt 文件的设置参数。原图的尺寸为640*380。

再次点击工具,选择图像分析工具。在弹出的 Image 窗口中右击鼠标,在弹出的菜单栏中选择"Import Properties",选择工程目录下的out.txt 配置文件,选择后等待图片加载,加载完成后显示缩放后的图片。

在 Properties 属性可看到out.txt 文件的设置参数。放大后的图片尺寸为960*570。

同时,可在工程的Image 目录下直接查看转换后的图片 Out.bmp。

实验结束后,点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。

image.png

相关文章:

  • 《人工智能导论》书面作业
  • 帝国cms批量取消文章审核-把已审核的文章改成未审核的方法
  • EasyCVR/EasyDSS无人机直播技术助力野生动物监测
  • Aeron:Multi-Destination-Cast
  • Arduino单片机详解
  • 深入了解Redis的TYPE命令
  • Python启多个线程,运行多个Python文件
  • 力扣191. 位1的个数
  • HTML+CSS+PHP实现网页留言板功能(需要创建数据库)
  • VB点击按钮,改变按钮的文字和字体
  • Java 枚举详解与应用
  • 烟雾自动监测识别摄像机
  • AI 已经在污染互联网了。。赛博喂屎成为现实
  • Canonical Juju 的一个奇怪编排部署
  • 哈喽GPT-4o——对GPT-4o 编程的思考与看法
  • Docker入门(二) - Dockerfile
  • input的行数自动增减
  • iOS小技巧之UIImagePickerController实现头像选择
  • JAVA 学习IO流
  • ng6--错误信息小结(持续更新)
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Redis 懒删除(lazy free)简史
  • swift基础之_对象 实例方法 对象方法。
  • Vim 折腾记
  • 初识 beanstalkd
  • 大整数乘法-表格法
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 前端知识点整理(待续)
  • 全栈开发——Linux
  • 实习面试笔记
  • 手机端车牌号码键盘的vue组件
  • 数组大概知多少
  • 问题之ssh中Host key verification failed的解决
  • 项目实战-Api的解决方案
  • 原生js练习题---第五课
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​Linux·i2c驱动架构​
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • ‌内网穿透技术‌总结
  • #vue3 实现前端下载excel文件模板功能
  • (19)夹钳(用于送货)
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (PySpark)RDD实验实战——求商品销量排行
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (含笔试题)深度解析数据在内存中的存储
  • (回溯) LeetCode 77. 组合
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一)认识微服务
  • (转)setTimeout 和 setInterval 的区别
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ***测试-HTTP方法