RGB与YIQ的转换

RGB与YIQ的转换YIQ 是 NTSC NationalTele 电视系统标准 Y 是提供黑白电视及彩色电视的亮度信号 Luminance 即亮度 Brightness I 代表 In phase 色彩从橙色到青色 Q 代表 Quadrature phase 色彩从紫色到黄绿色 优点较其他颜色空间 YIQ 颜色空间具有能将图像中的亮度分量分离提取出来的优点 并且 YIQ


每种颜色相当于一个三维向量,不同的表示法则相当于同一个向量在不同的坐标轴下(即不同的基下)的表示。

YIQ简单介绍

YIQ,是NTSC(National Television Standards Committee)电视系统标准。Y是提供黑白电视及彩色电视的亮度信号(Luminance),即亮度(Brightness),I代表In-phase,色彩从橙色到青色,Q代表Quadrature-phase,色彩从紫色到黄绿色。

优点

较其他颜色空间,YIQ颜色空间具有能将图像中的亮度分量分离提取出来的优点,并且YIQ颜色空间与RGB颜色空间之间是线性变换的关系,计算量小,聚类特性也比较好,可以适应光照强度不断变化的场合,因此能够有效地用于彩色图像处理。可用于在自然条件下采集到的复杂背景下的运动目标的识别


RGB简单介绍

RGB色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

在电脑中,RGB的所谓“多少”就是指亮度,并使用整数来表示。通常情况下,RGB各有256级亮度,用数字表示为从0、1、2…直到255。注意虽然数字最高是255,但0也是数值之一,因此共256级。

按照计算,256级的RGB色彩总共能组合出约1678万种色彩,即256×256×256=。通常也被简称为1600万色或千万色。也称为24位色(2的24次方)。

RGB 转 YIQ

转换是我们实验室项目的一个需求,基于论文,利用YIQ对对图像处理上的优势,Android中JNI连得C++的库,连得OpenCV,做的操作和转换。

//代码摘自我们的项目,师兄的代码,但是这个转换公式网上应该不少,原理可自查 Mat XXX::Rgb2Ntsc(Mat&frame) { 
      //输入rgb的mat型图 Mat dst = frame.clone(); frame.convertTo(frame, CV_32FC3); dst.convertTo(dst, CV_32FC3); //逐行逐列逐像素点的转换 for (int i = 0; i < frame.rows; i++) { 
      for (int j = 0; j < frame.cols; j++) { 
      dst.at<Vec3f>(i, j)[2] = saturate_cast<float>(((0.299*frame.at<Vec3f>(i, j)[2] + 0.587*frame.at<Vec3f>(i, j)[1] + 0.114*frame.at<Vec3f>(i, j)[0])) / 255); dst.at<Vec3f>(i, j)[1] = saturate_cast<float>(((0.596*frame.at<Vec3f>(i, j)[2] + -0.274*frame.at<Vec3f>(i, j)[1] + -0.322*frame.at<Vec3f>(i, j)[0])) / 255); dst.at<Vec3f>(i, j)[0] = saturate_cast<float>(((0.211*frame.at<Vec3f>(i, j)[2] + -0.523*frame.at<Vec3f>(i, j)[1] + 0.312*frame.at<Vec3f>(i, j)[0])) / 255) * 200; } } return dst;//返回YIQ形式的mat } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202976.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午10:52
下一篇 2026年3月19日 下午10:53


相关推荐

  • 解决java.io.IOException: Broken pipe的报错

    解决java.io.IOException: Broken pipe的报错又好久没写博客了 说好的每周更新两篇博客的计划又落空了 不管了 从这周开始我将会坚持每周更新两篇技术博客 欢迎大家积极监督 好了 废话不多说 下面正式开启我的博客之旅 这周一碰到了一个生产 bug 拉取京东的第三方账单时居然拉取失败了 当时自己马上去阿里云查看了下生产日志 看到了如下的报错 从如上的图中 这明显是报了 java io IOException Brokenpipe 这个错误 第一次见到这个报错的自己有点被整懵圈了 但是拼接着自己过往的经验 自己初步猜测到肯定是哪个网络环节

    2026年3月16日
    1
  • 最全java面试题及答案(208道)「建议收藏」

    最全java面试题及答案(208道)「建议收藏」本文分为十九个模块,分别是:「Java基础、容器、多线程、反射、对象拷贝、JavaWeb、异常、网络、设计模式、Spring/SpringMVC、SpringBoot/SpringCloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM」,如下图所示:共包含208道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单,下面一起进入主题吧。Java基础1.JDK和JRE有什么区别?…

    2022年8月10日
    14
  • SQL Server 存储过程_mysql存储过程教程

    SQL Server 存储过程_mysql存储过程教程储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。

    2022年10月5日
    6
  • Traceroute原理学习

    Traceroute原理学习Traceroute可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。曾经介绍过IP记录路由的选项RR,为什么不使用这个选项而另外开发一个新的应用程序Traceroute呢?原因有三:其一,并不是所有的路由器都支持记录路由这个选项;其二,记录路由一般是单向的选项,发送端设置了该选项,接收端不得不从收到的IP首部中提取出所有的信息,然后全部返回给发送端。大多数的ping服

    2022年7月21日
    17
  • Spring 核心控制器DispatcherServlet(三)

    Spring 核心控制器DispatcherServlet(三)

    2021年8月25日
    73
  • 单点登录sso认证中心

    单点登录sso认证中心单点登录 sso 认证中心什么是单点登录 单点登录全称 SingleSignOn 以下简称 SSO 是指在多系统应用群中登录一个系统 便可在其他所有系统中得到授权而无需再次登录 包括单点登录与单点注销两部分 1 登录相比于单系统登录 sso 需要一个独立的认证中心 只有认证中心能接受用户的用户名密码等安全信息 其他系统不提供登录入口 只接受认证中心的间接授权 间接授权通过令牌实现 s

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号