图像处理ASIC设计方法 笔记24 等价表和标记代换

(一)等价表的整理与压缩
1.1 等价关系的识别与追踪
在初步标记过程完成后,等价表的整理和压缩变得至关重要。这一阶段的首要任务是从等价表的地址1开始,对等价表进行逐个扫描。在扫描过程中,系统将检查每个临时标记是否存在等价关系。若发现等价关系,系统将执行追踪过程,以确保具有等价关系的标记能够被最小化,并在等价表中进行相应的更新。

1.2 等价表的压缩过程
等价表压缩的目的是简化标记,以便于后续处理。这一过程从自然数1开始,对等价表中的每个标记进行重新赋值。具体操作如下:首先设置两个指针k和j,其中k为当前检查的标记,j为压缩后的最终标记。若E(k)等于k本身,则将E(k)更新为j并递增j的值。否则,执行递归操作E(k) = E(E(k)),直到找到最小的等价标记,然后更新E(k)为该最小标记。这一过程确保了所有具有连通关系的标记都指向了它们的最终标记。

1.3 等价表操作的可视化
为了更好地理解等价表的搜索和操作过程,图6.18提供了一个可视化的示例。该图展示了在不同地址下进行读操作时,如何从等价表EQUTAB中获取数据,并展示了如何通过读周期发送读写控制信号来获取最小等价标记。如果获取到的数据与地址相等,则表明当前标记即为最小标记。

图片

1.4 搜索和操作的三种情况
在整理等价表时,每个临时标记的搜索和操作可以归纳为三种情况:

若E(l)等于l,则无需进行任何处理。

若E(l)等于a,且E(a)也等于a,则同样无需处理。

若E(l)等于t1,且存在一系列的等价关系E(t1)=t2,…,E(tn)=t,最终指向t,则更新E(l)为t。

(二)标记代换及特征值统计流水线
2.1 标记代换模块的结构与功能
标记代换模块是整个流水线的关键部分,它从接口模块interface_cl接收临时标记,并使用这些标记作为地址,通过table_interface模块从等价表中检索最终标记。检索到的最终标记被寄存一级,形成lbl_final。该模块确保lbl_final与控制信号(start_cc和!pause_cc)同步,以保证数据的准确性和时效性。
在这里插入图片描述
2.2 特征值统计流水线模块的工作原理
特征值统计流水线模块的功能是利用最终标记作为地址,从特征值存储器中读取相应的特征值。然后,模块对这些特征值进行计算,并将结果写回特征值存储器。值得注意的是,连通域的起点标志的统计方法与其他三个特征值有所不同,需要额外的起点标志存储器来辅助处理。

小结:这部分的笔记记录的是等价表的整理、压缩过程以及标记代换和特征值统计流水线的工作机制,对于数据结构的优化和算法的效率至关重要。
在这里插入图片描述

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

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

相关文章

链表类型的无界阻塞线程安全队列-ConcurrentLinkedQueue(FIFO)

ConcurrentLinkedQueue是非阻塞线程安全(volatile不能完全保证线程安全)的队列,适用于“高并发”的场景。是一个基于链表节点的无界线程安全队列,按照 FIFO(先进先出,尾先进头先出)原则对元素进行排序。队列元素中不可以放置null元素(内部实现的特殊节点除外)。 volati…

【rust工具链】

1 查看正在使用的工具链 命令:rustup show 结果显示: 从图中可以看到正在使用的是rustc 1.76.0版本,也可以看到已安装的所有版本的工具链 2 使用默认工具链 命令:rustup default 版本号 例如:rustup default 1.58…

【重学C语言】十五、文件操作

【重学C语言】十五、文件操作 文件的概念什么是流文件类型文本文件和二进制文件的区别文件指针文件指针常量预定义的文件指针stdin (标准输入)stdout (标准输出)stderr (标准错误输出)示例文件指针的声明使用文件指针悬挂指针示例文件缓冲区为什么需要缓冲区?缓冲区的类型缓冲…

Python语言绘制好看的小提琴图、箱形图、散点图、山脊图和柱状图等等

废话不多说,今天给大家分享一个,使用python绘制小提琴图、箱形图、散点图、山脊图和柱状图等等 图中的数据是随机生成的,图例,图注以及坐标题目各种信息,具体内容大家可以自己修改~ 效果图如下所示 👇&a…

AIGC时代算法工程师的面试秘籍(2024.4.29-5.12第十三式) |【三年面试五年模拟】

写在前面 【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试方法,力求让读者在获得心仪offer的同时,增强技术基本面。也欢迎大家提出宝贵的优化建议,一起交流学习💪 欢迎大家关注Rocky…

『ZJUBCA Weekly Feed 07』MEV | AO超并行计算机 | Eigen layer AVS生态

一文读懂MEV:区块链的黑暗森林法则 01 💡TL;DR 这篇文章介绍了区块链中的最大可提取价值(MEV)概念,MEV 让矿工和验证者通过抢先交易、尾随交易和三明治攻击等手段获利,但也导致网络拥堵和交易费用增加。为了…

ThreadPoolExecutor线程池使用以及源码解析

文章目录 1. 引子2. 线程池源码分析2.1. 总览2.2. Executor2.3. ExecutorService2.4. AbstractExecutorService2.5. ThreadPoolExecutor构造函数核心参数阻塞队列拒绝策略核心属性线程池状态Worker 类execute() 方法addWorker() 方法runWorker() 方法getTask() 方法processWork…

奇舞周刊第529期:万字长文入门前端全球化

周五快乐(图片由midjourney生成) 奇舞推荐 ■ ■ ■ 万字长文入门前端全球化 目前国内企业正积极开拓国际市场,国际化已成为重要的发展方向,因此产品设计和开发更需考虑国际化。本文介绍了语言标识、文字阅读顺序等诸多知识。然后…

Java面试题:Java中的并发集合有哪些?请举例说明它们的使用场景

Java中的并发集合是为多线程环境设计的,它们提供了线程安全的访问和操作。以下是Java中一些常见的并发集合及其使用场景: ConcurrentHashMap: 线程安全的HashMap实现。它通过将数据分布在多个段(segment)上,每个段单独加锁&#x…

ubuntu安装samba实现共享文件windows可查看ubuntu中的文件

samba的作用:实现共享linux/ubuntu系统中的文件,在windows直接查看操作ubuntu/linux中的文件、文件夹 1、安装samba sudo apt-get install samba如果不能安装samba,则更新apt-get sudo apt-get upgrade sudo apt-get update sudo apt-get d…

LeetCode热题100—链表(一)

160.相交链表 题目 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意&#x…

These relative modules were not found:* ../../../constant in

这个错误信息表明,你的项目在尝试加载一个相对路径模块 ../../../constant 时遇到了问题。具体来说,它在 ./node_modules/cache-loader/dist/cj 这个路径下找不到这个模块。 这里有几个可能的原因和相应的解决方案: 路径错误:首…

ts: 索引类型

一: 索引签名 索引签名用于定义对象类型,允许对象具有任意数量的属性,但属性名的类型必须是字符串(在大多数情况下)或数字(在某些特定的上下文中,如数组或类似数组的对象)。索引签名…

CHFS数据区县码(最全版本)

CHFS数据区县码(最全版本) CHFS数据区县码(2011-2019年),数据真实可用,并可赠送chfs2011-2019年公开数据。

【Unity2D 2022:Cinemachine】相机跟随与地图边界

一、导入Cinemachine工具包 1. 点击Window-Package Manager,进入包管理界面 2. 点击All,找到Cinemachine工具包,点击Install 二、相机跟随角色 1. 选中Main Camera,点击Component-Cinemachine-CinemachineBrain,新建…

linux中sysfs创建设备节点的方法和DEVICE_ATTR

使用DEVICE_ATTR宏,可以定义一个struct device_attribute设备属性,使用函数sysfs_create_group或sysfs_create_file便可以在设备目录下创建具有show和store方法的节点。能方便的进行调试。 一、使用DEVICE_ATTR构建device attribute 下面将顺着我们直接…

Sping源码(八)—Spring事件驱动

观察者模式 在介绍Spring的事件驱动之前,先简单的介绍一下设计模式中的观察者模式。 在一个简单的观察者模式只需要观察者和被观察者两个元素。简单举个栗子: 以警察盯梢犯罪嫌疑人的栗子来说: 其中犯罪嫌疑人为被观察者元素而 警察和军人为…

【启程Golang之旅】基本变量与类型讲解

欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了…

Fortran:forpy 嵌入Python

Fortran嵌入Python 利用forpy库,可以在Fortran程序内嵌入Python. program test_forpyuse forpy_modimplicit noneinteger::ierrierrforpy_initialize()!!---------------!!list!!---------------blocktype(list)::my_listierrlist_create(my_list)ierrmy_list%app…

【JVM】内存区域划分 | 类加载的过程 | 双亲委派机制 | 垃圾回收机制

文章目录 JVM一、内存区域划分1.方法区(1.7之前)/ 元数据区(1.8开始)2.堆3.栈4.程序计数器常见面试题: 二、类加载的过程1.类加载的基本流程1.加载2.验证3.准备4.解析5.初始化 2.双亲委派模型类加载器找.class文件的过…