Mil学习之Mbuf
一、什么是Mbuf
以Mbuf为前缀的函数构成缓冲模块。缓冲区模块允许您分配和控制数据缓冲区(存储区域)和容器(容纳缓冲区和其他容器的MIL对象),这些通常由多个MIL模块的功能操作。缓冲区的示例包括图像缓冲区和查找表(LUT)缓冲区。该模块允许您使用子缓冲区或感兴趣的区域隔离缓冲区的区域,将缓冲区的区域或位平面复制到另一个缓冲区,并将使用拜耳滤波器从相机获取的图像转换为3波段彩色图像。该模块可以归档和检索常用存储格式(如TIFF、JPEG和AVI)的缓冲区数据。该模块还允许您压缩和解压缩图像和序列,无损或无损。
二、Mbuf常用功能
三、 函数调用
1. Alloc
主要使用 MbufAlloc1d、MbufAlloc2d 函数和 MbufAllocColor 函数。
其中 MbufAlloc1d 可能用来分配1D图像、数组、Kernel等。
其中 MbufAlloc2d 可能用来分配2D图像、数组、Kernel等。
MbufAllocColor 可用来分配2D黑白、彩色图片、数组等。
MIL.MbufAlloc1d(MilSystem, 640, 8 + MIL.M_UNSIGNED, MIL.M_IMAGE + MIL.M_DISP + MIL.M_GRAB + MIL.M_PROC, ref Image1);
MIL.MbufAlloc2d(MilSystem, 640, 480, 8 + MIL.M_UNSIGNED, MIL.M_IMAGE + MIL.M_DISP + MIL.M_GRAB + MIL.M_PROC, ref Image2);
MIL.MbufAllocColor(MilSystem, 3, 640, 480, 8 + MIL.M_UNSIGNED, MIL.M_IMAGE + MIL.M_PROC + MIL.M_DISP, ref Image3);
所有分配的MilID都需要释放。
MIL.MbufFree(Image);
2. Child
顾名思义,原图的子buf,对子buf的处理等效于原图处理,因为处理区域更小,所以效率更高一些。
MIL.MbufChildColor(ImageColor, MIL.M_LUMINANCE, ref Image);
MIL.MbufChildColor(ImageColor, MIL.M_RED, ref Image);
MIL.MbufChild2d(ImageGray, 124, 98, 200, 300, ref Image);
MbufChildColor。针对彩色图片的算子,这个是提取原图的某一个通道,要求输入图片是3通道彩色图片,输出图片可以是抽取 RGB, HSL, HSV, YUV中任意一个通道,Mil会自动的将原图转换到对应的格式并抽取你需要的通道给你,这个转换图片格式的过程是在Mil内部完成的,并不会改变输入图片的格式,但是对子buf的处理结果会影响到原图。
1)如果原图是RGB三通道彩色图片ImageColor,我们初始化为全黑;
2)我们提取HSL格式中的L通道子图像ImageChildL,Mil会自动吧RGB格式的原图转换成HSL格式,并把L通道数据给你,然后原图又变成RGB格式。
3)这时我们把L通道子buf数据置成255,你会发现这个操作的影响按照HSL格式图像的方式还原到了RGB原图中。
MIL.MbufAllocColor(MilSystem, 3, 640, 480, 8 + MIL.M_UNSIGNED, MIL.M_IMAGE + MIL.M_PROC + MIL.M_DISP, ref Image);
MIL.MbufClear(Image, MIL.M_COLOR_BLACK);
MIL.MbufChildColor(Image, MIL.M_LUMINANCE, ref Image2);
MIL.MbufClear(Image2, 255.0);
MbufChild2d。针对单通道图片的算子。如果我们将原图中某一个2D子buf进行操作等效于在原图设置一个ROI进行操作。
子buf同样需要释放,因为所有分配的MilID都需要释放 。
3. Copy
复制,Clone是复制属性,会分配一个新的图像ID;Copy是单纯的复制图片,不会分配一个新的图像ID。
如果需要快速分配一个MbufID,可以使用Clone函数,如果是有ID需要复制图片数据则使用Copy函数。
举个例子,如果你有一张图片A,Clone得到图片B,那么图片AB一模一样,但是图片B是纯黑的,因为克隆是不包括数据的。
MIL.MbufClone(Image, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT, ref ImageNew);
MIL.MbufCopy(Image, Image2);
4. Control
这个我并不常用,用过Max和Min两个属性重新设置图像映射的最大最小值。即将原图最大最小值范围内的像素中心映射到0-255。
其它的还有Lock,Map等属性可以参考帮助文档。
MIL.MbufControl(ImageSrc, MIL.M_MIN, 20.0);
MIL.MbufControl(ImageSrc, MIL.M_MAX, 200.0);
MIL.MimRemap(MIL.M_DEFAULT, ImageSrc, ImageDst, MIL.M_DEFAULT);
5. Inquire
查询图像信息。
MIL.MbufInquire(ImageSrc, MIL.M_SIZE_BIT, ref SizeBit); // 图像位深 8位
MIL.MbufInquire(ImageSrc, MIL.M_DATA_TYPE, ref DataType); // 图像数据类型 无符号
MIL.MbufInquire(ImageSrc, MIL.M_SIZE_BAND, ref SizeBand); // 图像通道数 1通道或者3通道
MIL.MbufInquire(ImageSrc, MIL.M_SIZE_X, ref SizeX); // 图像宽
MIL.MbufInquire(ImageSrc, MIL.M_SIZE_Y, ref SizeY); // 图像高
6. IO
对于本地图片的读写。
MIL.MbufLoad("1.bmp", min1); // 不会分配新的MilBufID
MIL.MbufRestore("2.bmp", MilSystem, ref Image); // 会分配新的MilBufID
MIL.MbufImport("2.bmp", MIL.M_DEFAULT, MIL.M_RESTORE + MIL.M_NO_GRAB + MIL.M_NO_COMPRESS, MilSystem, ref min1); // 会分配新的MilBufID + 指定图像数据格式
MIL.MbufSave("4.bmp", min1);
7. Data
从MbufID中获取和放置图像数据,对应的有1D 2D等函数,用法类似。需要注意的是数组数据类型和大小。
Byte[] data = new Byte[649*480];
MIL.MbufGet(MilImageID, data); // 从MilID中取出数据到数组
MIL.MbufPut(MilImageID, data); // 从数组中取出数据到MilID
8. Other
// 设置图片处理的ROI,ROI图片非0的区域都是有效区域
MIL.MbufSetRegion(ImageSrc, ImageRoi, MIL.M_DEFAULT, MIL.M_DEFAULT, MIL.M_DEFAULT);// 初始化图片为纯黑图片
MIL.MbufClear(ImageSrc, 0.0);
Mil学习之Mbuf相关推荐
- Mil学习之Mim的简单操作
1. 旋转矩形区域的矫正 MIL.MbufAllocColor(MilSystem, MIL.MbufInquire(MilImage, MIL.M_SIZE_BAND, MIL.M_NULL),nW ...
- Mil学习之Mapp
一.什么是Mapp 以Mapp为前缀的函数构成了应用程序模块.应用程序模块允许您初始化和控制MIL应用程序的执行环境.除其他外,该模块还提供集成调试服务.用于基准测试的高性能计时器.可移植线程和事件处 ...
- Mil学习之Mcal
将常用的Mcal模块函数梳理了一下 代码没有调试,可能会有Bug using System; using System.Collections.Generic; using System.Linq; ...
- 模式识别 - 处理多演示样例学习(MIL)特征(matlab)
处理多演示样例学习(MIL)特征(matlab) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27206325 多演示样例学习( ...
- ObjecT4:On-line multiple instance learning (MIL)学习
原文链接:http://blog.csdn.net/ikerpeng/article/details/19235391 用到论文,直接看翻译. 文章:Robust object tracking wi ...
- 多示例学习 MIL(multiple instance learning) 理解
多示例学习举例:假如一段视频由很多张图组成,假如10000张,那么我们要判断视频里是否包含某一物体,比如气球.单张标注每一帧是否有气球太耗时,通常人们看一遍说这个视频里是否有气球,就得到了多示例学习的 ...
- 基于Python和OpenCV的目标跟踪学习教程 Object Tracking using Python and OpenCV
实现12种不同的算法来跟踪视频和网络摄像头中的对象! 你会学到: 使用Python和OpenCV跟踪视频和网络摄像头中的对象 理解跟踪算法的基本直觉 实现12种跟踪算法 了解对象检测和对象跟踪之间的区 ...
- 热门 | Google Brain前员工深度盘点2017人工智能和深度学习各大动态
翻译 | AI科技大本营 参与 | shawn 编辑 | Donna 2017年是人工智能井喷的一年.Google Brain团队前成员Denny Britz在自己的博客WILDML上对过去一年人工智 ...
- 首次公开!深度学习在知识图谱构建中的应用
在智能化时代的今天,搜索引擎不仅能理解用户检索的信息.并总结出与搜索话题相关的内容,更在逐步构建一个与搜索结果相关的完整知识体系,让用户获得意想不到的发现.神马搜索的知识图谱与应用团队就在这条路上不断 ...
最新文章
- poj3007(set的应用)
- 一文讲清,MySQL的执行计划
- 【Webview相关问题】登陆失败之cookie陷阱
- AseoZdpAseo.init(this, AseoZdpAseo.INSERT_TYPE);
- 向线程传递数据与线程用回调方法检索数据
- 多个输出用java怎么写_请问用java写程序怎么输出这两个图形
- HDU - 6899 Xor(数位dp)
- 【Ubuntu】ubuntu系统下python3和python2环境自由切换
- FileNet入门学习
- MyEclipse使用阿里p3c代码规范
- 《五分钟商学院》个人篇学习总结(下)
- 编译开源路由下iNode客户端njit8021xclient
- apple与android传数据线,可以同时插安卓和苹果的数据线
- 云南计算机一级c类基础知识,云南省大学计算机一级C类多选题及答案.pdf
- 多通道声源定位方法之GCC-PHAT:原理及matlab实现
- 晨风机器人发送图片_晨风机器人基本使用说明
- Iptables DNAT实现broadcast与unicast之间相互映射
- 仿百度,谷歌输入框自动提示功能
- 新浪新闻评论系统的架构演进和经验总结
- 【某OTA网站加密参数还原生成】
热门文章
- 普通线性回归/岭回归/lasso回归[x.T/np.dot/lrg.coef_/lrg.intercept_/Xw = y/r2_score]
- 自动行为操控(Steering)(一)—框架
- 2021-07-24 第二周CTF学习总结
- 概率论:参数估计——点估计
- 消除Flash Player广告推送
- 各种光学仪器成像技术(下)
- 【算法与数据结构】—— 博弈论(初级篇之巴什博弈)
- Python自学路线图之Python系统自学
- c#工业自动化通信开发库,工业自动软件必备的基本程序
- cdkjava | 绘制含有丰富信息的化学反应