(2)ITK中迭代器的时间效率

news2024/11/18 12:30:56

背景

ITK对图像处理中,为了提高代码运行效率,通过迭代器Iterator可以实现对时间的优化。
在ITK的官方文档中也有明确的说明:
在这里插入图片描述
针对此说明,本次使用对图像获取最大值最小值的方式,来实验和测试其效率。

代码实现

(1)for循环的方式

/*
*其中,imgSlice为输入的2d图像
*ImageType的定义为:using InputPixelType = short;  
*using ImageType = itk::Image<InputPixelType, 2>;
*返回的最大最小值为: w_ScalarMax, w_ScalarMin;
*/
//计算最大最小值
        ImageType::SizeType size = imgSlice->GetLargestPossibleRegion().GetSize();
        ImageType::PixelType pixelValue, w_ScalarMax, w_ScalarMin;
        for (int i = 0; i < size[0]; i++) {
            for (int j = 0; j < size[1]; j++) {
                ImageType::IndexType pixelIndex;
                pixelIndex[0] = i;
                pixelIndex[1] = j;
                pixelValue = imgSlice->GetPixel(pixelIndex);
                if (i == 0 && j == 0) {
                    w_ScalarMax = w_ScalarMin = pixelValue;
                }
                else {
                    if (pixelValue > w_ScalarMax) {
                        w_ScalarMax = pixelValue;
                    }
                    if (pixelValue < w_ScalarMin) {
                        w_ScalarMin = pixelValue;
                    }
                }
            }
        }

以上代码是使用for循环进行求其。

(1)“迭代器”的方式

/*
*其中,imgSlice为输入的2d图像
*ImageType的定义为:using InputPixelType = short;  
*using ImageType = itk::Image<InputPixelType, 2>;
*返回的最大最小值为: w_ScalarMax, w_ScalarMin;
*/
        ImageType::PixelType  w_ScalarMax1, w_ScalarMin1;
        typedef  itk::ImageRegionIterator< ImageType > IteratorTypeFilter;
        IteratorTypeFilter  iteratorFilter(imgSlice.GetPointer(), imgSlice.GetPointer()->GetRequestedRegion());
        iteratorFilter.GoToBegin();
        while (!iteratorFilter.IsAtEnd())
        {
            if (iteratorFilter.Value() > w_ScalarMax1) {
                w_ScalarMax1 = iteratorFilter.Value();
            }
            if (iteratorFilter.Value() < w_ScalarMin1) {
                w_ScalarMin1 = iteratorFilter.Value();
            }
            ++iteratorFilter;
        }

以上是使用迭代器的代码实现。

为了对比其效果,做了时间测试:
测试图像:512*512
测试次数:15次(由于单次时间在1ms附件,无法使用定时器直接对比,因此将以上代码循环15次来对比时间)
时间对比:
在这里插入图片描述

结论

使用迭代器的方式,可以明显提高代码的时间效率。

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

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

相关文章

JDBC 数据库连接池之Driud

1 数据库连接池简介 数据库连接池是个容器&#xff0c;负责分配、管理数据库连接(Connection) 它允许应用程序重复使用一个现有的数据库连接&#xff0c;而不是再重新建立一个&#xff1b; 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据…

数据安全新战场,EasyMR为企业筑起“安全防线”

2020年1月&#xff0c;时间跨度长达14年的&#xff0c;微软2.5亿条客户服务和支持记录在网上泄露&#xff1b; 同年4月&#xff0c;微盟发生史上最贵“删库跑路”事件&#xff0c;造成微盟市值一夜之间缩水约24亿港币&#xff1b; 今年7月&#xff0c;网信办依据《数据安全法…

PCIEBPMCx4板卡

PCIEBPMCx4本板卡可以使标准的PMC板卡安装于带有PCIE插槽的PC机上使用&#xff0c;安装后占一个槽位&#xff0c;槽位可以为PCIE x4 PCIE x8、PCIE x16&#xff0c;安装后工作在PCIE x4模式。PCIE X1 后开口也可以使用&#xff0c;但只运行在PCIE X1模式。PCIE支持X4 V2.0,板载…

Python对json的操作总结

Json简介&#xff1a;Json&#xff0c;全名 JavaScript Object Notation&#xff0c;是一种轻量级的数据交换格式。Json最广泛的应用是作为AJAX中web服务器和客户端的通讯的数据格式。现在也常用于http请求中&#xff0c;所以对json的各种学习&#xff0c;是自然而然的事情。 J…

C++学习笔记(十四)——vector的模拟实现

vector各函数接口总览 vector当中的成员变量介绍 默认成员函数 构造函数1 构造函数2 构造函数3 拷贝构造函数 赋值运算符重载函数 析构函数 迭代器相关函数 begin和end 容量和大小相关函数 size和capacity reserve resize empty 修改容器内容相关函数 push_ba…

centos8:安装java

一、背景 因为centos 8 安装Jenkins需要java环境&#xff0c;所以本文记录安装java环境过程。 二、环境 开发电脑&#xff1a;Windows 10 CentOS 8.4 64位 三、安装 3.1、java -version检查是否已安装 java -version 没有安装 3.2、检查系统是否自带jdk rpm -qa |grep …

Word控件Spire.Doc 【超链接】教程(1):如何在C#/VB.NET中给Word 文档插入超链接

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

系统移植 uboot 2

一、uboot源码获取 1.1 uboot官网获取 ftp://ftp.denx.de/pub/u-boot/ 前提是是芯片厂家将uboot源码开源到uboot官网上 1.2 ST开发社区获取 https://wiki.stmicroelectronics.cn/stm32mpu/wiki/STM32MP1_Developer_Package 1.3 ST官网 https://www.st.com/en/embedded-sof…

opcj3—人人开源三大套件的简单用法

renren开源是一个很不错的开源开发组件&#xff0c;人人开源 其中目前对我们最有用的有三个&#xff1a;renren-fast、renren-fast-vue和renren-generator。 renren-generator是核心服务&#xff0c;可以根据数据库自动生成从controller层到service层&#xff0c;再到持久层的…

.net开发安卓入门 - 环境安装

文章目录工具VS2022Android SDK Manager如下图&#xff0c;安装一个镜像和工具模拟器设备管理器如下图启动模拟器&#xff0c;看一下效果常见问题工具 VS2022 下载地址&#xff1a;https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?skuCom…

Linux邮件服务Postfix部署

我们看下邮件协议&#xff1a; 简单邮件传输协议&#xff08;SMTP&#xff09;&#xff1a;用于发送和中转出的电子邮件。使用TCP/25端口。 邮局协议版本&#xff08;POP3&#xff09;&#xff1a;用于将邮件存储到本地&#xff0c;占用服务器的TCP/110端口。 Internet 消息访问…

【Python游戏】一个csdn小编用Python语言写了一个足球游戏,成功模拟世界杯决赛现场

前言 halo&#xff0c;包子们下午好 最近世界杯不是很火呀 很多小伙伴应该都知道球赛反正买&#xff0c;别墅靠大海&#xff01; 今天就给大家实现一个类似世界杯的足球小游戏&#xff0c;咱就说真的堪比国足了&#xff01; 哈哈哈~ 好啦 直接开整&#xff01;&#xff01;&am…

「以代码作画」从数据角度剖析Art Blocks生成艺术

作者&#xff1a;Mia Bao, co-founder of thepass.to, chief partner of WHALE members 数据&#xff1a;Jin, data analyst of thepass.to 出品&#xff1a;ThePASS & BeepCrypto 文章数据&#xff1a;https://docs.google.com/spreadsheets/d/1zDun4eUTwA-BMU5Hl2c5EC…

基于SSM网上商城购物系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

目标检测算法——人体姿态估计数据集汇总 2(附下载链接)

&#x1f384;&#x1f384;近期&#xff0c;小海带在空闲之余收集整理了一批人体姿态估计数据集供大家参考。 整理不易&#xff0c;小伙伴们记得一键三连喔&#xff01;&#xff01;&#xff01;&#x1f388;&#x1f388; 目录 一、V-COCO数据集 二、宜家 ASM 数据集 三、…

如何解决在加载、保存或覆盖项目文件时 Lumion 可能无法打开或显示错误的问题?

为什么在加载、保存或覆盖项目文件时 Lumion 可能无法打开或显示错误&#xff1f;那么这个问题大家跟着赞奇云工作站一起来解答吧。 1. 这就是为什么 如果Lumion在加载 .LS Project文件时崩溃或显示错误 &#xff0c;通常意味着 .LS Project 文件因保存错误而损坏。遗憾的是&…

电脑技巧:分享6个实用的资源网站

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

一框式检索和高级检索

0. 学习内容 2022年12月8日15:38:07CNKI学习 学会多种检索方式检索基础文献 1. 一框式检索 1.1 简单使用 左侧选择检索字段 根据需求选择 输入想要的检索词输入想要的检索范围 顾名思义&#xff1a;在检索的时候只有一个搜索框&#xff0c;从而实现对文献进行检索 2. 高级检索…

「MacOS」在MacOS中添加环境变量

背景 最近在学习cmake使用&#xff0c;官网有dmg的安装教程&#xff0c;直接下载dmg文件然后拖拽到Application文件里就好。但在终端中执行cmake命令却显示没有cmake命令。下面内容以cmake为例&#xff0c;介绍如何在环境变量中添加命令行命令&#xff0c;其他命令也是如此。 …

m分别使用Dijkstra算法和Astar算法进行刚体机器人最短路径搜索和避障算法的matlab仿真,带GUI界面

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 Dijkstra&#xff08;迪杰斯特拉&#xff09;算法是典型的最短路径路由算法&#xff0c;用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展&#xff0c;直到扩展…