OpenCV实验系列之查表函数LUT()的使用

opencv LUT 查表函数简介 目前一些相机和美颜滤镜算法使用的是3dlut,通过颜色 映射来达到滤镜 美肤的目的,因此生成的像素需要查找调整好的颜色表。opencv 官方文档强烈推荐使用LUT函数来进行。 原型: void LUT(InputArray src, InputArray lut, OutputArray dst); src:目标图像,可以是单通道也可以是多通道 lut:映射表格,当src为单时,必须为... 阅读详情

OpenCV实验系列之查表函数LUT()的使用

LUT()查表函数功能说明

LUT函数是用于对Mat矩阵数据进行快速遍历修改的函数,从官网给出的性能对比上可以看出对比其他遍历方法,其在速度上有极大的优势。
这里写图片描述
但该函数只能对八位的矩阵数据进行遍历,对于其他数据格式则需要进行其它方式的遍历处理。

LUT()的基本思想

LUT()基本思想是查表,既将矩阵中所有可能遇到的值都计算一遍储存在数组中,在遍历过程中只是将对应的查表值进行赋值即可,这样可以避免大量的重复计算,这是典型的使用存储空间换取速度的做法。但这也限制了其应用范围,其只能运用于有限结果的计算。

LUT()的基本使用方法

以下是根据官方手册提供的例程更改的典型使用方法

Mat I;//输入矩阵
Mat J;//输出矩阵
Mat lookUpTable(1, 256, CV_8U);//查表用矩阵

uchar* p = lookUpTable.ptr();//填充查表值
for( int i = 0; i < 256; ++i)
        p[i] = table[i];//table[i]为i经计算后的值,可替换为公式。

LUT(I, lookUpTable, J);//进行遍历

LUT()例程

#include<iostream>  
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>  
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

void main()
{
    double t = (double)getTickCount();//计时开始

    Mat src;
    src=imread("shape.png",IMREAD_GRAYSCALE);
    imshow("src",src);
    Mat dst = src.clone();
    imshow("dst",dst);
    Mat lookUpTable(1, 256, CV_8U);

    uchar* p = lookUpTable.ptr();
    for( int i = 0; i < 256; ++i)
        p[i] = i/2;

    LUT(src,lookUpTable,dst);
    imshow("dst_scan",dst);

    t = ((double)getTickCount() - t)/getTickFrequency();//计算耗时
    cout << "Times passed in seconds: " << t << endl;
    waitKey(0);
}

这里写图片描述
原图
这里写图片描述
遍历处理后图片

【opencv】颜色映射表操作-applyColorMap()和LUT()函数使用介绍 opencv颜色映射表操作 阅读详情

相关推荐

OpenCV--006:伪彩色:LUT作用与用法

LUT LUT是:Look Up Table(颜色查找表)。 通过LUT,可以将一组RGB值输出为另一组RGB值,从而改变画面的曝光与色彩。 作用 避免对每一个像素都进行一次计算。预先计算每个像素值的对应的匹配值,然后直接对原图中的像素值在LUT中进行查找,即可快速得到匹配值,减少大量不必要的计算。 LUT 不单单用于图像中。在数据处理中,只要知道原始数据范围、变换公式、变换后得到的数据,...

WaitFoF 4753

Opencv学习-LUT函数

LUT(LOOK -UP-TABLE)查找表,我表达能力不好,加上对这个了解的不是很深刻,对于LUP具体解释用文字不好说。不过看下面例子应该可以看懂。 首先我们看单通道图像。        对于8位单通道图片,其像素灰度为0-255,假如我们想将图像某一灰度值换成其他灰度值,用查找就很好用。   例如:我们想将一张图片灰度为0-100的像素的灰度变成0,101-200的变成100,2

anjisi的博客 3万+

OpenCV实现Instagram滤镜:LUT查表与色彩空间转换实战

Instagram滤镜本质是图像在HSV、Lab等感知均匀色彩空间中的非线性映射,而非简单RGB参数调节。其技术原理依赖色彩空间转换解耦亮度与色度,再通过LUT(查找表)实现高效、精准的像素级映射,兼顾效果一致性与实时性能。相比PIL或纯NumPy方案,OpenCV凭借硬件加速(IPP/OpenCL)、工业级色彩管理(ICC/D65适配)和原生LUT支持,成为嵌入式、Web服务及桌面端滤镜落地的首选工具。本文聚焦OpenCV 101级工程实践,详解BGR/HSV/Lab转换精度控制、32×32×32三维LU

weixin_30080745的博客 310

【C++ OpenCV】LUT查找表原理、实操、使用时机

在OpenCV中,LUT代表查找表(Lookup Table),它是一种用于像素值映射的技术。查找表是一个数组,其中每个元素对应于输入像素值的一个映射值。使用LUT可以有效地对图像进行像素值的转换,常用于颜色空间转换或者对特定像素值进行操作。LUT通常在需要将图像像素值映射到其他值域时使用,例如将灰度图像转换为伪彩色图像。通过定义一个映射表,可以将原始图像中的每个像素值映射到新的颜色或灰度值,从而实现不同的效果。

dagengen12138的博客 5162

27.LUT颜色查找表

最后,通过cv::LUT函数将输入图像中的像素值根据查找表进行映射,得到输出图像。LUT(Lookup Table)是一种常用的图像处理技术,它是通过事先定义好的查找表对图像中的像素值进行映射,从而实现像素级的变换操作。此外,LUT是一种非常灵活的方法,可以实现各种像素级的变换操作,并且适用于不同的图像类型和颜色空间。LUT的基本原理是将输入图像中的每个像素值作为索引,在查找表中找到对应的新像素值。查找表通常是一个一维数组,数组的大小与输入图像的灰度级数目相同,每个元素表示输入图像中对应像素值的新值。

twnkie的博客 931

给STM32供电,别只接VDD和GND!VBAT、VDDA这些引脚不接会怎样?

本文深入解析STM32电源设计中VBAT与VDDA引脚的关键作用,揭示仅连接VDD和GND可能导致的ADC精度下降、RTC功能异常等问题。通过实测数据对比不同连接方案,提供包括滤波电路设计、PCB布局布线和双电源自动切换在内的实用解决方案,帮助开发者优化系统稳定性与性能。

weixin_30521161的博客 629

python opencv的函数cv2.LUT(src, lut, dst=None)的具体使用(LUT:查找表)

参考:https://blog.youkuaiyun.com/Dontla/article/details/103963085 参考 # opencv官方文档对LUT API的解释 参考:https://vimsky.com/examples/detail/python-attribute-cv2.LUT.html # LUT的使用案例

求真、务实 1万+

嘉立创封装图下载后必做的3步优化(附批量删除机械层技巧)

本文针对从嘉立创下载的封装图,系统讲解了三步核心优化流程,以解决其直接使用时的常见问题。重点介绍了如何高效批量删除冗余的机械层,避免制造错误;并详细说明了规范丝印层间距、统一焊盘命名等关键步骤,帮助工程师将第三方封装转化为可靠、合规的设计资源,从而提升PCB设计效率与文件质量。

weixin_29227585的博客 433

【OpenCV 例程300篇】202. 查表快速替换(cv.LUT)

函数 cv.LUT() 用来实现对图像中像素值的快速转换,称为查表函数。查找表在图像处理中主要用于像素点的映射运算,包括线性变换和非线性变换,处理速度极快,用时只有 for 循环的 数千分之一。 查找表只能用于不涉及位置相关、邻域相关的操作,如:替换、取反、赋值、阈值、二值化、灰度变换、颜色缩减和直方图均衡化。 例程 14.3:LUT 实现图像反转 例程 14.4:LUT 实现颜色空间缩减 例程 :LUT 实现分段线性灰度变换.........

youcans的博客 3337

拌合楼软件开发(24)接收微信消息生成车辆计划

【摘要】针对拌合站客户群体文化程度不高、习惯微信群沟通的业务场景,提出通过企业微信机器人实现微信对话下单的解决方案。核心是利用WorkTool工具的消息回调机制:1)配置接收消息的API接口;2)解析JSON格式的对话数据,筛选@机器人的有效消息;3)采用*号分隔符提取订单信息并进行校验;4)建立微信昵称与客户系统的映射关系。方案解决了传统系统登录门槛高的问题,但需注意群名唯一性、多系统对接及客户身份识别等关键问题。全文重点阐述技术实现逻辑而非具体代码。

morsth的博客 1045

医学超声影像研究——从拒稿到录用:我的UMB投稿实战复盘

本文分享了作者将一篇关于超声影像中肿瘤传统分类方法的研究论文,从被其他期刊拒稿到最终被《Ultrasound in Medicine & Biology》录用的完整实战经验。文章详细复盘了心态调整、精准选刊、针对UMB期刊的稿件精修、投稿系统操作细节以及与审稿人有效沟通回复的全过程,为医学影像领域的科研工作者提供了宝贵的投稿策略与实操指南。

stem5的博客 492

利用OpenCV的函数LUT()对矩阵的数据进行查表映射

利用OpenCV的函数LUT()对矩阵的数据进行查表映射

昊虹AI笔记 973

【学习系列】SAP RAP 17:RAP应用部署集成至Fiori Launchpad 【S4HC Public Edition】

本文详细介绍了在SAP S/4HANA Cloud环境中部署RAP应用集成到Fiori Launchpad的两种方法:使用BAS(SAP Business Application Studio)和VSCode。主要步骤包括:1)在BTP中配置Destination连接ES环境;2)设置信任关系;3)创建BAS开发空间;4)通过Fiori应用生成器部署RAP应用;5)创建IAM App、Business Catalog和Business Role;6)配置Launchpad Space和Pages。文章还提供

DeveloperMrMeng的博客 966

OpenCv之查表法LUT

摘要:本文介绍了LUT(查表法)在图像处理中的应用。LUT通过预定义映射表实现像素值的快速转换,支持单通道或多通道独立处理。核心应用包括:1)色彩校正与滤镜效果;2)图像增强与缺陷检测;3)动态范围压缩(伪彩色成像);4)实时二值化处理。文中提供了过曝光修复和复古滤镜两个实例,展示了如何通过构建对数变换、伽马校正等LUT表实现高效图像处理。该方法计算速度快,适合工业视觉和实时处理场景。

WSTONECH的博客 698

(计算机组成原理)第二章数据的表示和运算-第二节:数字电路基础知识

本文介绍了计算机组成原理中的逻辑门电路、多路选择器和三态门。逻辑门电路包括基本逻辑运算(与、或、非)和复合逻辑运算(与非、或非、异或、同或),这些运算通过门电路实现,并满足分配律和结合律。多路选择器(MUX)用于从多个输入信号中选择一个输出,广泛应用于数据选择、资源共享和逻辑函数实现等场景。三态门则具有三种输出状态(高电平、低电平、高阻态),常用于总线控制和信号隔离。这些元件在数字电路设计和计算机系统中具有重要作用。

快乐江湖的博客 2474

pdb文件删除杂原子 HETATM;保留或去除水分子

这样操作水分子也会跟着删除,如果需要保留水分子。

weixin_42357472的博客 2645

OpenCV学习 查表函数LUT C++

一、概念 LUT(LOOK -UP-TABLE)查找表。简言之:通过事先建立的一张表对图像进行映射。这样可以起到突出图像的有用信息,增强图像的光对比度的作用对某图像中的像素值进行替换。 二、原理 函数原型: void LUT(InputArray src, InputArray lut, OutputArray dst); //src表示的是输入图像(可以是单通道也可是3通道) //lut表示查找表(查找表也可以是单通道,也可以是3通道; //...如果输入图像为单通道,那查找表必须为单通道; //...若

闫小亘的博客 1014

PR工具timing report中setup time的计算过程

然后去pr工具里报告report_delay_calculation/reportDelayCalculation -from related_pin -to constraint_pin。这里constraint pin就是D pin (D0 D1 D2 D3),related pin就是 CK pin。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 455

OpenCV 查找表修改像素与LUT用法

然而,OpenCV里面已经有了相应函数可以让我们更加方便地对像素进行操作,那便是LUT函数,而且推荐使用OpenCV的内建函数,因为已经针对芯片做了优化设计,使得速度有很大提升。 函数原型为:void LUT(InputArray src, InputArray lut, OutputArray dst) 第一个参数:原始图像的地址; 第二个参数:查找表的地址,对于多通道图像的查找,它可以有一个通...

张齐贤的博客 1576

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Opencv: cv::LUT()深入解析图像块快速查表变换

LUT(查找表),顾名思义,就是一个数组,预先存放了所有可能输入值对应的输出值。以 8 位灰度图为例,像素值范围是0 ~ 255,那我们可以构建一个长度为 256 的查找表:然后,处理图像时,只需用像素值作为索引,直接取表里的结果即可 ——O(1) 查找,速度极快。

Ethan_Rich的博客 639

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OpenCV手搓Instagram滤镜:从色彩空间到LUT查表的工业级实现

图像滤镜本质上是面向人眼感知的确定性像素变换,其核心原理建立在色彩空间转换、直方图分布调控与查表映射等基础图像处理技术之上。OpenCV作为最成熟的传统视觉库,提供了YUV/LAB空间转换、CLAHE局部均衡、自定义卷积核及cv2.LUT等关键能力,使开发者能以可解释、可调试、低延迟的方式实现专业级调色效果。相比深度学习模型,这类基于OpenCV 101的轻量方案在移动端功耗降低37%、推理提速4倍以上,广泛应用于AR眼镜、车载中控、智能摄像头等资源受限场景。本文聚焦OpenCV基础操作与滤镜落地之间的七道

weixin_30325971的博客 625

Opencv之高效函数LUT

Opencv之高效函数LUT

修行之路 408

OpenCV中的LUT函数(查表法)

简单来说就是通过映射关系,将原图像的像素值进行缩减操作,比如说  table[56]=5,就表示将像素值为56的点映射为5,这种方法仅有赋值运算,不涉及乘除、加减运算,可以极大降低时间复杂度。程序源码:/* LUT查表函数的使用,结合滑动条函数 */ #include &lt;opencv2/opencv.hpp&gt; #include "opencv2/highgui/highgui.hp...

浅陌风型 2447

opencv中LUT函数使用

有时候我们需要对某图像中的像素值进行替换,例如对于8位单通道的灰度图像,共有256个灰度级0-255,如果需要将其中的0-9范围内的像素值为0;10-19范围内的像素值为10;20-29范围内的像素值为20等等可以使用公式 newImage=originalImage/10*10;具体为所以0-255的256中灰度级被分成了0-25共26种灰度级。因为图像的矩阵维度很高,如果每个像素都使用公式进行...

mrahut的博客 1281

Opencv的LUT函数-查表操作

#include #include using namespace std; using namespace cv; int main() { //建立一个查找表 int table[256]; int div = 50; for (int i = 0; i < 256; i++) { table[i] = i / div * div; } Mat lut(1, 256,

qq_23880193的专栏 6458

[opencv4]调用 LUT实现图片基于LookUpTable的快速转换

在上一篇文章中,介绍了用于加快图片转换速度的Look Up Table,官方也提倡使用这种方式 并提供了OpenCV的标准接口:cv::LUT() [opencv4]调用 LUT实现图片基于LookUpTable的快速转换-目录 1.Look Up Table 的原理及手动实现 2.官方文档 3.使用方法 3.1 公式解释 3.1.1 第一个 3.1.2 第二个 3.2 参数...

... 1209
上一篇: Opencv 实验系列之Mat
下一篇: OpenCV实验系列之Mask操作
Nrush
博客等级 码龄11年 55粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值