实验一:图像信号的数字化

目录

一、实验目的

 二、实验原理

三、实验内容

四、源程序及结果

源程序(python):

结果:

五、结果分析


一、实验目的

  1. 通过本实验了解图像的数字化过程,了解数字图像的数据矩阵表示法。
  2. 掌握取样(象素个数)、量化与图像质量的关系。

 二、实验原理

        数字化的图像是以矩阵形式存储的,因而数字图像的数据矩阵表示法是指将数字化后的图像表示为一个二维矩阵的形式,其中矩阵中的元素对应于图像像素的灰度值。

        对于同一幅图像,不同的像素总数会影响其图像的分辨率和清晰度,一般来说,越大的像素总数意味着越高的清晰度;反之,图像的像素数越小,图像会越不清晰,出项“棋盘格”现象(马赛克),图像细节越来越小。

        不同灰度级呈现的图像也有着类似的效果。在灰度级数量较高的情况下,图像能够显示更多细微的灰度变化,这样的图像具有更高的对比度黑白之间的过渡更为清晰,使得图像更生动、细腻相反,当灰度级数量较低时,图像只能表示较少的灰度变化范围,黑白之间的过渡不够平滑,过低的灰度级还会出现“伪轮廓”现象导致图像中出现了不真实的边界或轮廓。

三、实验内容

  1. 选取任意一副灰度图像,imread进行读取,显示其像素值阵列。
  2. 减少图像的像素,实现多组不同像素总数表示的同一副图像。观察图像采样的像素数对图像质量的影响,观察“棋盘格”现象。
  3. 减小同一副图像灰度级,实现多组不同灰度级来显示同一幅图像,并选取合适的灰度阈值来实现一幅二值图像。观察图像量化对图像质量的影响,观察“伪轮廓”现象。

四、源程序及结果

源程序(python):
import cv2
from matplotlib import pyplot as pltdef pixel_list(height, width, grayscale):for i in range(height):for j in range(width):pixel_value = grayscale[i, j]print(f'{pixel_value:3}', end=' ')print('\n')if __name__ == '__main__':# 1.读取图片灰度图信息img_grayscale = cv2.imread(filename='lena.jpg', flags=cv2.IMREAD_GRAYSCALE)img_height, img_width = img_grayscale.shape# 2.显示像素阵列pixel_list(height=img_height, width=img_width, grayscale=img_grayscale)# 3.绘图:matplot显示图片fig, axis = plt.subplots(2, 4)# 1)原图axis[0, 0].imshow(img_grayscale, cmap='gray')axis[0, 0].set_title('Original(256\u00D7256)')# 2)128*128像素axis[0, 1].imshow(cv2.resize(img_grayscale, (128, 128)), cmap='gray')axis[0, 1].set_title('128\u00D7128')# 3)64*64像素axis[0, 2].imshow(cv2.resize(img_grayscale, (64, 64)), cmap='gray')axis[0, 2].set_title('64\u00D764')# 4)32*32像素axis[0, 3].imshow(cv2.resize(img_grayscale, (32, 32)), cmap='gray')axis[0, 3].set_title('32\u00D732')# 5)灰度级32img_grayscale_32 = cv2.convertScaleAbs(img_grayscale, alpha=31 / 255, beta=0)axis[1, 0].imshow(img_grayscale_32, cmap='gray', vmin=0, vmax=31)axis[1, 0].set_title('Grayscale:32')# 6)灰度级16img_grayscale_16 = cv2.convertScaleAbs(img_grayscale, alpha=15 / 255, beta=0)axis[1, 1].imshow(img_grayscale_16, cmap='gray', vmin=0, vmax=15)axis[1, 1].set_title('Grayscale:16')# 7)灰度级8img_grayscale_8 = cv2.convertScaleAbs(img_grayscale, alpha=7 / 255, beta=0)axis[1, 2].imshow(img_grayscale_8, cmap='gray', vmin=0, vmax=7)axis[1, 2].set_title('Grayscale:8')# 8)二值图_, binary_image = cv2.threshold(img_grayscale_8, 3, 7, cv2.THRESH_BINARY)axis[1, 3].imshow(binary_image, cmap='gray')axis[1, 3].set_title('Binary Image')plt.show()
结果:

图1 图像像素矩阵(部分)

图2 不同像素数及灰度级数下的同一图像

五、结果分析

        如图一所示,一幅灰度图像的每一个像素点都是用一个灰度级表示。实验中使用的图像为8比特分辨率,因此含有256个灰度级别。

        对于不同像素数表示的同一图像,减小像素数,在一定范围内,图像的变化并不明显,如图2中256×256和128×128图像变化比较小,但继续减小像素数,图像会出现“棋盘格”现象且越来越明显,如图中的64×64到32×32图像。

        同样的,减小灰度级数,在一定范围内图像的变化也不明显,而但灰度级减小到一定程度时,便会在图像的某些区域出现灰度突变的“伪轮廓”,而且这种现象会随灰度级减小越来越明显,如图2中灰度级16和8的两幅图像。如果灰度级减小到为2时,就是所谓的二值图,只有黑白两种颜色,图像边界会更明显。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 网络配置与连接

一、网络配置 1.1 ifconfig 网卡配置查询 ifconfig #查看所有启动的网络接口信息 ifconfig 指定的网卡 #查看指定网络接口信息 1.2 修改网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33 #ens33网络配置文…

【电源拓扑】反激拓扑

目录 工作模式 固定频率 CCM连续电流模式 DCM不连续电流模式 可变频率 CRM电流临界模式 反激电源CRM工作模式为什么要跳频 反激电源应用场景 为什么反激电源功率做不大 电感电流爬升 反激变压器的限制条件 精通反激电源设计的关键-反激电源变压器设计 反激电源变压…

MySQL 事务与锁

事务ACID特性 原子性:事务要么同时成功,要么同时失败,事务的原子性通过undo log日志保证 一致性:业务代码要抛出报错,让数据库回滚 隔离性:事务并发执行时,他们内部操作不能互相干扰 持久性&…

Python 读取esxi上所有主机的设备信息

(主要是为了统计所有虚拟机的设备名称和所属主机) 代码: from pyVim import connect from pyVmomi import vim import ssldef get_vm_devices(vm):devices []try:if vm.config is not None and hasattr(vm.config, hardware) and hasattr(v…

postgresql简单导出数据与手动本地恢复(小型数据库)

问题 需要每天手动备份postgresql。 步骤 导出数据 /opt/homebrew/opt/postgresql16/bin/pg_dump --file/Users/zhangyalin/backup_sql/<IP地址>_pg-2024_07_15_17_30_15-dump.sql --dbname<数据库名> --username<用户名> --host<IP地址> --port54…

Day53:图论 岛屿数量 岛屿的最大面积

99. 岛屿数量 时间限制&#xff1a;1.000S 空间限制&#xff1a;256MB 题目描述 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成&#xff0c;并且四周…

低空经济持续发热,无人机培训考证就业市场及前景剖析

随着科技的不断进步和社会需求的日益增长&#xff0c;低空经济已成为全球及我国经济增长的新引擎。作为低空经济的重要组成部分&#xff0c;无人机技术因其广泛的应用领域和显著的经济效益&#xff0c;受到了社会各界的广泛关注。为满足市场对无人机人才的需求&#xff0c;无人…

深入剖析 Android 开源库 EventBus 的源码详解

文章目录 前言一、EventBus 简介EventBus 三要素EventBus 线程模型 二、EventBus 使用1.添加依赖2.EventBus 基本使用2.1 定义事件类2.2 注册 EventBus2.3 EventBus 发起通知 三、EventBus 源码详解1.Subscribe 注解2.注册事件订阅方法2.1 EventBus 实例2.2 EventBus 注册2.2.1…

ipynb转换为pdf、Markdown(.md)

Jupyter Notebook 文件&#xff08;.ipynb&#xff09;可以转换成多种数据格式&#xff0c;以适应不同的使用场景和需求。以下是几种常见的转换格式及其简洁描述&#xff1a; HTML: Jupyter Notebook可以直接导出为静态的网页&#xff08;HTML&#xff09;格式&#xff0c;这样…

记一次IP数据处理过程,文本(CSV文件)处理,IP解析

个人博客&#xff1a;无奈何杨&#xff08;wnhyang&#xff09; 个人语雀&#xff1a;wnhyang 共享语雀&#xff1a;在线知识共享 Github&#xff1a;wnhyang - Overview 起因 突然接收到XX给的任务&#xff0c;要将一批IP数据处理一下&#xff0c;将IP对应的省市区解析出来…

PHP智云物业管理平台微信小程序系统源码

​&#x1f3e0;智云物业管理新纪元&#xff01;微信小程序&#xff0c;让家园管理更智慧&#x1f4f1; &#x1f3e1;【开篇&#xff1a;智慧生活&#xff0c;从物业开始】&#x1f3e1; 在快节奏的现代生活中&#xff0c;我们追求的不仅仅是家的温馨&#xff0c;更是生活的…

基于hive数据库的泰坦尼克号幸存者数据分析

进入 ./beeline -u jdbc:hive2://node2:10000 -n root -p 查询 SHOW TABLES; 删除 DROP TABLE IF EXISTS tidanic; 上传数据 hdfs dfs -put train.csv /user/hive/warehouse/mytrain.db/tidanic 《泰坦尼克号幸存者数据分析》 1、原始数据介绍 泰坦尼克号是当时世界上…

达梦数据库系列—28. 主备集群高可用测试

目录 监视器关闭 监视器启动&#xff0c;Detach备库 主备正常&#xff0c;手动switchover 主库故障&#xff0c;自动switchover 主库故障&#xff0c;手动Takeover 主库故障&#xff0c;备库强制takeover 主库重启 备库故障 公网连接异常 主库私网异常 备库私网异常…

实现给Nginx的指定网站开启basic认证——http基本认证

一、问题描述 目前我们配置的网站内容都是没有限制&#xff0c;可以让任何人打开浏览器都能够访问&#xff0c;这样就会存在一个问题&#xff08;可能会存在一些恶意访问的用户进行恶意操作&#xff0c;直接访问到我们的敏感后台路径进行操作&#xff0c;风险就会很大&#xff…

Why can‘t I access GPT-4 models via API, although GPT-3.5 models work?

题意&#xff1a;为什么我无法通过API访问GPT-4模型&#xff0c;尽管GPT-3.5模型可以工作&#xff1f; 问题背景&#xff1a; Im able to use the gpt-3.5-turbo-0301 model to access the ChatGPT API, but not any of the gpt-4 models. Here is the code I am using to tes…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【22】【RabbitMQ】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【22】【RabbitMQ】 Message Queue 消息队列异步处理应用解耦流量控制 消息中间件概念RabbitMQ概念MessagePublisherExchangeQueueBindingConnectionChannelConsumerVirtual HostBroker图…

Django prefetch_related()方法

prefetch_related的作用 prefetch_related()是 Django ORM 中用于优化查询性能的另一个重要方法&#xff0c;尤其在处理多对多&#xff08;ManyToMany&#xff09;关系和反向关系时非常有用。它允许你预加载相关对象&#xff0c;从而减少数据库查询次数。 1&#xff0c;创建应…

【香橙派】Orange pi AIpro开发板使用之一键部署springboot项目

前言 最近有幸收到一份新款 OrangePi AIpro 开发板&#xff0c;之前手里也捣鼓过一些板子&#xff0c;这次尝试从零开始部署一个简单的后端服务。OrangePi AIpro 采用昇腾AI技术路线&#xff0c;具体为4核64位处理器AI处理器&#xff0c;可配16GB内存容量&#xff0c;各种复杂应…

数字化赋能,加油小程序让出行更便捷高效

在快节奏的现代生活中&#xff0c;每一次加油不仅是车辆续航的必要步骤&#xff0c;也成为了人们日常生活中不可或缺的一环。随着科技的飞速发展&#xff0c;传统加油模式正逐步向智能化、便捷化转型&#xff0c;其中&#xff0c;加油小程序作为这股浪潮中的佼佼者&#xff0c;…

el-date-picker手动输入日期,通过设置开始时间和阶段自动填写结束时间

需求&#xff1a;根据开始时间&#xff0c;通过填写阶段时长&#xff0c;自动填写结束时间&#xff0c;同时开始时间和节数时间可以手动输入 代码如下&#xff1a; <el-form ref"ruleForm2" :rules"rules2" :model"formData" inline label-po…