滤波器与色彩转换

HDVPSS图像缩放与编码实战:多相滤波器与SD_VENC配置详解 在嵌入式视频处理系统中,图像缩放与编码是连接数字处理与模拟输出的核心技术。缩放本质是重采样过程,通过多相滤波器结构实现高质量插值,其系数配置直接影响输出图像的清晰度与平滑度。编码环节则将处理后的数字视频流转换为CVBS等模拟信号,涉及严格的时序同步与色彩空间转换。这些技术共同支撑了画中画、多画面分割等复杂视频合成功能,并在数字电视、视频监控等领域有广泛应用。本文聚焦于德州仪器HDVPSS中的区域缩放器与标清视频编码器模块,深入解析其多相滤波器系数生成、VPDMA配置流程以及SD_VENC的时序与色彩空间转换 阅读详情

滤波器与色彩转换

HUNNISH 注:

本翻译是直接根据 OpenCV Beta 4.0 版本的用户手册翻译的,原文件是:<opencv_directory>/doc/ref/opencvref_cv.htm, 可以从 SOURCEFORG 上面的 OpenCV 项目下载,也可以直接从 阿须数码 中下载:http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs/ref/opencvref_cv.htm。

翻译中肯定有不少错误,另外也有些术语和原文语义理解不透导致翻译不准确或者错误,也请有心人赐教。翻译这些英文参考手册的目的是想与国内 OPENCV 的爱好者一起提高 OPENCV 在计算机视觉、模式识别和图像处理方面的实际应用水平


Smooth

各种方法的图像平滑

void cvSmooth( const CvArr* src, CvArr* dst,
               int smoothtype=CV_GAUSSIAN,
               int param1=3, int param2=0, double param3=0 );

src
输入图像.
dst
输出图像.
smoothtype
平滑方法:
  • CV_BLUR_NO_SCALE (简单不带尺度变换的模糊) - 对每个象素领域 param1×param2 求和。如果邻域大小是变化的,可以事先利用函数 cvIntegral 计算积分图像。
  • CV_BLUR (simple blur) - 对每个象素邻域 param1×param2 求和并做尺度变换 1/(param1?param2).
  • CV_GAUSSIAN (gaussian blur) - 对图像进行核大小为 param1×param2 的高斯卷积
  • CV_MEDIAN (median blur) - 发现邻域 param1×param1 的中值 (i.e. 邻域是方的).
  • CV_BILATERAL (双滤波) - 应用双向 3x3 滤波,彩色 sigma=param1,空间 sigma=param2. 关于双向滤波,可参考 http://www.dai.ed.ac.uk/CVonline/LOCAL_COPIES/MANDUCHI1/Bilateral_Filtering.html
param1
平滑操作的第一个参数.
param2
平滑操作的第二个参数. param2 为零对应简单的尺度变换和高斯模糊。
param3
对应高斯参数的 Gaussian sigma (标准差). 如果为零,这由下面的核尺寸计算:
              sigma = (n/2 - 1)*0.3 + 0.8, 其中 n=param1 对应水平核,
                                                n=param2 对应垂直核.
              
对小的卷积核 (3×3 to 7×7) 使用标准 sigma 速度会快。如果 param3 不为零,而 param1 和 param2 为零,则核大小有 sigma 计算 (以保证足够精确的操作).

函数 cvSmooth 可使用上面任何一种方法平滑图像。每一种方法都有自己的特点以及局限。

没有缩放的图像平滑仅支持单通道图像,并且支持8位、16位、32位和32位浮点格式。

简单模糊和高斯模糊支持 1- 或 3-通道, 8-比特 和 32-比特 浮点图像。这两种方法可以(in-place)方式处理图像。

中值和双向滤波工作于 1- 或 3-通道, 8-位图像,但是不能以 in-place 方式处理图像.


Filter2D

对图像做卷积

void cvFilter2D( const CvArr* src, CvArr* dst,
                 const CvMat* kernel,
                 CvPoint anchor=cvPoint(-1,-1));
#define cvConvolve2D cvFilter2D

src
输入图像.
dst
输出图像.
kernel
卷积核, 单通道浮点矩阵. 如果想要应用不同的核于不同的通道,先用 cvSplit 函数分解图像到单个色彩通道上,然后单独处理。
anchor
核的锚点表示一个被滤波的点在核内的位置。 锚点应该处于核内部。缺省值 (-1,-1) 表示锚点在核中心。

函数 cvFilter2D 对图像进行线性滤波,支持 In-place 操作。当开孔部分位于图像外面时,函数从最近邻的图像内部象素差值得到边界外面的象素值。


Integral

计算积分图像

void cvIntegral( const CvArr* image, CvArr* sum, CvArr* sqsum=NULL, CvArr* tilted_sum=NULL );

image
输入图像, W× H, 单通道,8位或浮点 (32f 或 64f).
sum
积分图像, W+1× H+1, 单通道,32位整数或 double 精度的浮点数(64f).
sqsum
对象素值平方的积分图像, W+1× H+1, 单通道,32位整数或 double 精度的浮点数 (64f).
tilted_sum
旋转45度的积分图像,单通道,32位整数或 double 精度的浮点数 (64f).

函数 cvIntegral 计算一次或高次积分图像:

sum(X,Y)=sumx<X,y<Yimage(x,y)

sqsum(X,Y)=sumx<X,y<Yimage(x,y)2

tilted_sum(X,Y)=sumy<Y,abs(x-X)<yimage(x,y)

利用积分图像,可以方便得到某个区域象素点的和、均值、标准方差或在 0(1) 的选择角度。例如:


sumx1<=x<x2,y1<=y<y2image(x,y)=sum(x2,y2)-sum(x1,y2)-sum(x2,y1)+sum(x1,x1)

因此可以在变化的窗口内做快速平滑或窗口相关。


CvtColor

色彩空间转换

void cvCvtColor( const CvArr* src, CvArr* dst, int code );

src
输入的 8-比特 或浮点图像.
dst
输出的 8-比特 或浮点图像.
code
色彩空间转换,通过定义 CV_<src_color_space>2<dst_color_space> 常数 (见下面).

函数 cvCvtColor 将输入图像从一个色彩空间转换为另外一个色彩空间。函数忽略 IplImage 头中定义的 colorModel 和 channelSeq 域,所以输入图像的色彩空间应该正确指定 (包括通道的顺序,对RGB空间而言,BGR 意味着 24-位格式,其排列为 B0 G0 R0 B1 G1 R1 ... 层叠,而 RGB 意味着 24-位格式,其排列为 R0 G0 B0 R1 G1 B1 ... 层叠). 函数做如下变换:

  • RGB 空间内部的变换,如增加/删除 alpha 通道,反相通道顺序,16位  RGB彩色变换(Rx5:Gx6:Rx5),以及灰度图像的变换,使用:
    RGB[A]->Gray: Y=0.212671*R + 0.715160*G + 0.072169*B + 0*A
    Gray->RGB[A]: R=Y G=Y B=Y A=0
    

    所有可能的图像色彩空间的相互变换公式列举如下:

  • RGB<=>XYZ (CV_BGR2XYZ, CV_RGB2XYZ, CV_XYZ2BGR, CV_XYZ2RGB):
    |X|   |0.412411  0.357585  0.180454| |R|
    |Y| = |0.212649  0.715169  0.072182|*|G|
    |Z|   |0.019332  0.119195  0.950390| |B|
    
    |R|   | 3.240479  -1.53715  -0.498535| |X|
    |G| = |-0.969256   1.875991  0.041556|*|Y|
    |B|   | 0.055648  -0.204043  1.057311| |Z|
    

  • RGB<=>YCrCb (CV_BGR2YCrCb, CV_RGB2YCrCb, CV_YCrCb2BGR, CV_YCrCb2RGB)
    Y=0.299*R + 0.587*G + 0.114*B
    Cr=(R-Y)*0.713 + 128
    Cb=(B-Y)*0.564 + 128
    
    R=Y + 1.403*(Cr - 128)
    G=Y - 0.344*(Cr - 128) - 0.714*(Cb - 128)
    B=Y + 1.773*(Cb - 128)
    

  • RGB=>HSV (CV_BGR2HSV,CV_RGB2HSV)
    V=max(R,G,B)
    S=(V-min(R,G,B))*255/V   if V!=0, 0 otherwise
    
           (G - B)*60/S,  if V=R
    H= 180+(B - R)*60/S,  if V=G
       240+(R - G)*60/S,  if V=B
    
    if H<0 then H=H+360
    

    使用上面从 0° 到 360° 变化的公式计算色调(hue)值,确保它们被 2 除后能试用于8位。

  • RGB=>Lab (CV_BGR2Lab, CV_RGB2Lab)
    |X|   |0.433910  0.376220  0.189860| |R/255|
    |Y| = |0.212649  0.715169  0.072182|*|G/255|
    |Z|   |0.017756  0.109478  0.872915| |B/255|
    
    L = 116*Y1/3      for Y>0.008856
    L = 903.3*Y      for Y<=0.008856
    
    a = 500*(f(X)-f(Y))
    b = 200*(f(Y)-f(Z))
    where f(t)=t1/3              for t>0.008856
          f(t)=7.787*t+16/116   for t<=0.008856
    
    上面的公式可以参考 http://www.cica.indiana.edu/cica/faq/color_spaces/color.spaces.html

  • Bayer=>RGB (CV_BayerBG2BGR, CV_BayerGB2BGR, CV_BayerRG2BGR, CV_BayerGR2BGR,
    CV_BayerBG2RGB, CV_BayerRG2BGR, CV_BayerGB2RGB, CV_BayerGR2BGR,
    CV_BayerRG2RGB, CV_BayerBG2BGR, CV_BayerGR2RGB, CV_BayerGB2BGR)

    Bayer 模式被广泛应用于 CCD 和 CMOS 摄像头. 它允许从一个单独平面中得到彩色图像,该平面中的 R/G/B 象素点被安排如下:

    R

    G

    R

    G

    R

    G

    B

    G

    B

    G

    R

    G

    R

    G

    R

    G

    B

    G

    B

    G

    R

    G

    R

    G

    R

    G

    B

    G

    B

    G

    The output RGB components of a pixel are interpolated from 1, 2 or 4 neighbors of the pixel having the same color. There are several modifications of the above pattern that can be achieved by shifting the pattern one pixel left and/or one pixel up. The two letters C1 and C2 in the conversion constants CV_BayerC1C22{BGR|RGB} indicate the particular pattern type - these are components from the second row, second and third columns, respectively. For example, the above pattern has very popular "BG" type.


Threshold

对数组元素进行固定阈值操作

void cvThreshold( const CvArr* src, CvArr* dst, double threshold,
                  double max_value, int threshold_type );

src
原始数组 (单通道, 8-比特 of 32-比特 浮点数).
dst
输出数组,必须与 src 的类型一致,或者为 8-比特.
threshold
阈值
max_value
使用 CV_THRESH_BINARY 和 CV_THRESH_BINARY_INV 的最大值.
threshold_type
阈值类型 (见讨论)

函数 cvThreshold 对单通道数组应用固定阈值操作。典型的是对灰度图像进行阈值操作得到二值图像。(cvCmpS 也可以达到此目的) 或者是去掉噪声,例如过滤很小或很大象素值的图像点。有好几种对图像取阈值的方法,本函数支持的方法由 threshold_type 确定:

threshold_type=CV_THRESH_BINARY:
dst(x,y) = max_value, if src(x,y)>threshold
           0, otherwise

threshold_type=CV_THRESH_BINARY_INV:
dst(x,y) = 0, if src(x,y)>threshold
           max_value, otherwise

threshold_type=CV_THRESH_TRUNC:
dst(x,y) = threshold, if src(x,y)>threshold
           src(x,y), otherwise

threshold_type=CV_THRESH_TOZERO:
dst(x,y) = src(x,y), if (x,y)>threshold
           0, otherwise

threshold_type=CV_THRESH_TOZERO_INV:
dst(x,y) = 0, if src(x,y)>threshold
           src(x,y), otherwise

下面是图形化的阈值描述:


AdaptiveThreshold

自适应阈值方法

void cvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value,
                          int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,
                          int threshold_type=CV_THRESH_BINARY,
                          int block_size=3, double param1=5 );

src
输入图像.
dst
输出图像.
max_value
使用 CV_THRESH_BINARY 和 CV_THRESH_BINARY_INV 的最大值.
adaptive_method
自适应阈值算法使用: CV_ADAPTIVE_THRESH_MEAN_C 或 CV_ADAPTIVE_THRESH_GAUSSIAN_C (见讨论).
threshold_type
取阈值类型:必须是下者之一
  • CV_THRESH_BINARY,
  • CV_THRESH_BINARY_INV
block_size
用来计算阈值的象素邻域大小: 3, 5, 7, ...
param1
与方法有关的参数。对方法 CV_ADAPTIVE_THRESH_MEAN_C 和 CV_ADAPTIVE_THRESH_GAUSSIAN_C, 它是一个从均值或加权均值提取的常数(见讨论), 尽管它可以是负数。

函数 cvAdaptiveThreshold 将灰度图像变换到二值图像,采用下面公式:

threshold_type=CV_THRESH_BINARY:
dst(x,y) = max_value, if src(x,y)>T(x,y)
           0, otherwise

threshold_type=CV_THRESH_BINARY_INV:
dst(x,y) = 0, if src(x,y)>T(x,y)
           max_value, otherwise

其中 TI 是为每一个象素点单独计算的阈值

对方法 CV_ADAPTIVE_THRESH_MEAN_C,它是 block_size × block_size 块中的象素点,被参数 param1 所减,得到的均值,

对方法 CV_ADAPTIVE_THRESH_GAUSSIAN_C 它是 block_size × block_size 块中的象素点,被参数 param1 所减,得到的加权和(gaussian)。

色彩滤波阵列(Color Filter Array) 原文链接:http://www.wangdali.net/cfa/#comment-15588作者:xiaomin色彩滤波阵列,英文名Color Filter Array或Colo... 阅读详情

相关推荐

2019 CFA II.rar

CFA Level II notes 2019 全套,KaplanSCHWESER2019CFA, 2019年CFA考试考纲内容的资料,教材更高效便捷,与2020版基本相同,变化极小。

Chromatix ISP参数解析(二)ABF(Adaptive Bayer Filter)

Chromatix ISP ABF

weixin_42302157的博客 3725

超清晰的CFA教材英文的9·44兆PDF

超清晰的CFA教材英文的9·44兆PDF

关于Camera的噪声的学习和理解(基础篇)

@图像成像及处理 关于 Camera 的成像流程中的噪声 camera成像在大的阶段上分为RAW域的成像和RGB域的成像。中间的过渡是由Demosaic模块完成的。 广泛意义上的RAW 域的噪声 通过查阅资料,RAW域的噪声主要分为高斯噪声和散粒噪声两种。其中高斯噪声是不随着光强变化的噪声,散粒噪声符合泊松分布,会随着光强的增加而逐渐的增大。在Sensor直出的RAW图中这两种类型的噪声都是包含在...

h1791820113的博客 1万+

【环境搭建】使用openSfM+MVSNet重建稠密点云

本帖详细介绍了如何使用openSfM+MVSNet对真实采集的数据进行稀疏重建与稠密重建,并针对一些真实场景下可能遇到的问题进行了整理。

YuhsiHu的博客 1972

【开关电源】开关电源实战经验分享

开关电源原理设计、Layout设计经验分享

weixin_42098658的博客 4170

cvIntegral—积分图的计算

原文地址:cvIntegral—积分图的计算作者:448967013 void cvIntegral( const CvArr* image, CvArr* sum, CvArr* sqsum=NULL, CvArr* tilted_sum=NULL );   image 输入图像, W×H, 单通道,8位或浮点 (32f 或 64f). sum 积分图像, W+1×H+1(译者注:原文的公式

小米mm修仙路 992

从XSA到Linux应用:Petalinux与Vitis的嵌入式开发全流程解析

本文详细解析了从XSA文件到Linux应用的嵌入式开发全流程,重点介绍了Petalinux与Vitis工具链的使用技巧和实战经验。通过XSA硬件描述、Petalinux工程搭建、系统镜像优化及Vitis开发配置等关键步骤,帮助开发者高效完成ZYNQ平台开发,解决常见问题并提升开发效率。

weixin_29195217的博客 192

学习OpenCV之CV篇

cv篇包含以下几个部分: 图像处理 结构分析 运动分析与对象跟踪 模式识别 相机标定和三维重建       1、图像处理 图像处理主要针对二维像素数组,但是我们称这些数组为“图像”,但是它们不一定非得是IplImage 结构,也可以是CvMat或者CvMatND结构。 梯度、边缘和角点 Sobel 使用扩展 Sobel

2796

在Qt中使用EtherCAT-SOEM的初始化中,状态机卡在PreOp->Save-Op过程中,出现State=0x12, Error=0x001e错误的解决办法

1.在调试EtherCAT软件过程中,一直出现配置从站进不了Save_op状态,通过下函数检查从站状态: //使用的从站编号为1 只有1个从站 ec_slave[1].state = EC_STATE_SAFE_OP; ec_writestate(1); //设置到安全模式 ec_statecheck(1, EC_STATE_SAFE_OP, EC_TIMEOUTSTATE * 4); printf("Slave %d State=0x%2.2x StatusCode=0x%4

zeal_for_rov的博客 6828

Unity地形数据高效转换:从Terrain到3DMAX的OBJ导出实战

本文详细解析了Unity地形数据无法直接导入3DMAX的原因,并提供了高效转换的实战方案。通过编写自定义编辑器脚本,将Unity Terrain的高度图数据“烘焙”为静态网格模型,并以OBJ格式导出。文章重点讲解了核心代码逻辑、分辨率选择对模型精度的影响,以及在3DMAX中导入和优化模型的实用技巧,旨在打通Unity与3DMAX之间的数据协作壁垒。

sky77的博客 448

OPENCV用户手册之图像处理部分(之四):滤波器与色彩转换(中文翻译)

滤波器与色彩转换 HUNNISH 注: 本翻译是直接根据 OpenCV Beta 4.0 版本的用户手册翻译的,原文件是:&lt;opencv_directory&gt;/doc/ref/opencvref_cv.htm, 可以从 SOURCEFORG 上面的 OpenCV 项目下载,也可以直接从 阿须数码 中下载:http://www.assuredigit.com/incoming/sou...

技术代码资料库 172

完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

本文以博主本人报考jun dui文职,从报考、备考、考试、查成绩到资格审查、面试,全程亲身经历,给想要报考该内容的朋友们一些小的参考。祝你顺利上岸!完整复盘【避雷jd文职某岗位】潍坊青州hhj(据说未来搬到天津),助理实验师岗位,三人进面,面试全部不及格,空头岗位!像这种情况,该单位很多 | 附个人完整备考背诵题目 | 世间一场梦,不会再考这个了

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 248

Python 之 图像转换(ImageTransformations)【终稿】

使用库OpenCV-Python import cv2 import numpy as np import matplotlib.pyplot as plt %matplotlib inline 色彩空间的变化 opencv的颜色转换方法 flags = [i for i in dir(cv2) if i.startswith('COLOR_')] print(flags[35:50]) # some of color-space conversion methods ['COLOR.

数据媛 1117

Seurat-SCTransform与harmony整合学习

源于R tips:Seurat之SCTransform方法原理 (qq.com)Seurat对象在经过SCTransform处理后会增加一个SCT的Assay,里面的scaled.data就是经过scale之后的pearson residual值,这个值是用于后续降维聚类分析使用的。

hx2024的博客 2330

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python 巴特沃斯滤波器_OpenCV3-Python滤波器详细介绍

1. 不同色彩空间OpenCV中有数百种关于不同色彩空间之间转换的方法。当前,在计算机视觉中由三种常用的色彩空间:灰度、BGR以及HSV(Hue,Saturation,Value)。(1)灰度色彩空间是通过去除色彩信息来将其转换成灰阶,灰度色彩空间对中间处理特别有效,比如:人脸识别。(2)BGR,即蓝-绿-红色彩空间,每一个像素点由一个三元数组来表示。(3)HSV,H(Hue)色调,S(Satur...

weixin_39636645的博客 1125

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

YUV与RGB色彩空间转换原理及TI DSS实现

色彩空间转换是数字视频处理的核心技术,其中YUV与RGB的相互转换尤为关键。YUV色彩空间通过分离亮度和色度分量,实现了更高的带宽效率和压缩友好性,而RGB则直接对应显示设备的物理特性。转换过程本质上是线性矩阵运算,涉及偏移处理、系数精度和范围处理等关键点。在嵌入式系统中,TI的显示子系统(DSS)通过专用硬件模块高效实现这一转换,支持BT.601和BT.709等多种标准。视频处理流水线通常以YUV格式处理数据,最终转换为RGB输出,这一过程在视频采集、压缩传输和显示等场景中广泛应用。

weixin_30443075的博客 561

图像处理100问--python实现(1-20)

python图像处理学习笔记 1.二值化 Thresholding def binarization(img, th=128): img[img < th] = 0 img[img >= th] = 255 return img img<th得到的数组当作索引,是一个很棒的技巧 2.大津二值法 Otsu’s Method 一种自动确定阈值的二值化方法 ...

Konata的博客 921

openCV图像处理常用算法总结

一、直方图和滤波器 1、直方图:在灰度图中,每个点的像素范围为 0~255 ,密度是具有该值的图像像素数量。 2、色彩均衡:色彩均衡的目的是获得分布更加均匀的直方图。其结果将会导致图像的对比度增加。 3、LUT色彩空间转换表:生成一个256个元素的矩阵,取得要从源空间变换到目标色彩空间的变换函数f(x)。从0到255,对每个数字带入到f(x)中,将得到的结果存入到矩阵中对应的位置。然...

weixin_38278993的博客 1万+

ffmpeg sws_scale详细分析

FFmpeg里面的sws_scale库可以在一个函数里面同时实现:1.图像色彩空间转换;2.分辨率缩放;3.前后图像滤波处理。 其核心函数主要有三个: // 初始化sws_scale struct SwsContext *sws_getContext(int srcW, int srcH, enum AVPixelFormat srcFormat, ...

qinglongzhan的博客 2867
上一篇: MSN进行时 msning
下一篇: MSN协议中文释义
dankes
博客等级 码龄22年 41粉丝 55原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值