2011-11-26 20:58:50 kiaxp27 阅读数 478
  • OpenVINO计算机视觉—实例实战

    手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。 课程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个课程准备精细,每一课都避免千篇一律,前一课有对后一课的预告,后一课有对前一课的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。 基本提纲: 1、课程综述、环境配置 2、OpenVINO范例-超分辨率(super_resolution_demo) 3、OpenVINO范例-道路分割(segmentation_demo) 4、OpenVINO范例-汽车识别(security_barrier_camera_demo) 5、OpenVINO范例-人脸识别(interactive_face_detection_demo) 6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo) 7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo) 8、NCS和GOMFCTEMPLATE 9、课程小结,资源分享

    343 人正在学习 去看看 禾路
  OpenGL实际上是一种图形与硬件的接口。它包括了120个图形函数,开发者可以用这些函数来建立三维模型和进行三维实时交互。与其他图形程序设计接口不同,OpenGL提供了十分清晰明了的图形函数,因此初学的程序设计员也能利用OpenGL的图形处理能力和1670万种色彩的调色板很快地设计出三维图形以及三维交互软件。
  OpenGL强有力的图形函数不要求开发者把三维物体模型的数据写成固定的数据格式,这样开发者不但可以直接使用自己的数据,而且可以利用其他不同格式的数据源。这种灵活性极大地节省了开发者的时间,提高了软件开发效益。
  长期以来,从事三维图形开发的技术人员都不得不在自己的程序中编写矩阵变换、外部设备访问等函数,这样为调制这些与自己的软件开发目标关系并不十分密切的函数费脑筋,而OpenGL正是提供一种直观的编程环境,它提供的一系列函数大大地简化了三维图形程序。例如:
  • OpenGL提供一系列的三维图形单元供开发者调用。
  • OpenGL提供一系列的图形变换函数。
  • OpenGL提供一系列的外部设备访问函数,使开发者可以方便地访问鼠标、键盘、空间球、数据手套等这种直观的三维图形开发环境体现了OpenGL的技术优势,这也是许多三维图形开发者热衷于OpenGL的缘由所在。
  • opengl工作流程图:
  •        其中几何顶点数据包括模型的顶点集、线集、多边形集,这些数据经过流程图的上部,包括运算器、逐个顶点操作等;图像数据包括象素集、影像集、位图集等,图像象素数据的处理方式与几何顶点数据的处理方式是不同的,但它们都经过光栅化、逐个片元(Fragment)处理直至把最后的光栅数据写入帧缓冲器。在OpenGL中的所有数据包括几何顶点数据和象素数据都可以被存储在显示列表中或者立即可以得到处理。OpenGL中,显示列表技术是一项重要的技术。
    OpenGL要求把所有的几何图形单元都用顶点来描述,这样运算器和逐个顶点计算操作都可以针对每个顶点进行计算和操作,然后进行光栅化形成图形碎片;对于象素数据,象素操作结果被存储在纹理组装用的内存中,再象几何顶点操作一样光栅化形成图形片元。整个流程操作的最后,图形片元都要进行一系列的逐个片元操作,这样最后的象素值BZ送入帧缓冲器实现图形的显示。

     OpenGL图形操作步骤
      说明了OpenGL的基本工作流程,根据这个流程可以归纳出在OpenGL中进行主要的图形操作直至在计算机屏幕上渲染绘制出三维图形景观的基本步骤:
      1)根据基本图形单元建立景物模型,并且对所建立的模型进行数学描述(OpenGL中把:点、线、多边形、图像和位图都作为基本图形单元)。
      2)把景物模型放在三维空间中的合适的位置,并且设置视点(viewpoint)以观察所感兴趣的景观。
      3)计算模型中所有物体的色彩,其中的色彩根据应用要求来确定,同时确定光照条件、纹理粘贴方式等。
      4)把景物模型的数学描述及其色彩信息转换至计算机屏幕上的象素,这个过程也就是光栅化(rasterization)。
      在这些步骤的执行过程中,OpenGL可能执行其他的一些操作,例如自动消隐处理等。另外,景物光栅化之后被送入帧缓冲器之前还可以根据需要对象素数据进行操作。


2018-11-21 18:24:43 cpongo4 阅读数 37
  • OpenVINO计算机视觉—实例实战

    手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。 课程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个课程准备精细,每一课都避免千篇一律,前一课有对后一课的预告,后一课有对前一课的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。 基本提纲: 1、课程综述、环境配置 2、OpenVINO范例-超分辨率(super_resolution_demo) 3、OpenVINO范例-道路分割(segmentation_demo) 4、OpenVINO范例-汽车识别(security_barrier_camera_demo) 5、OpenVINO范例-人脸识别(interactive_face_detection_demo) 6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo) 7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo) 8、NCS和GOMFCTEMPLATE 9、课程小结,资源分享

    343 人正在学习 去看看 禾路

OpenCV是英特尔开源的跨平台计算机视觉库,它是一套包含从图像预处理到预训练模型调用等大量视觉 API 的库,并可以处理图像识别、目标检测、图像分割和行人再识别等主流视觉任务。OpenCV提供了覆盖整个流程的工具,因此开发者不需要了解各个模型的原理就能基于各个API构建视觉任务。

\"image\"

OpenCV 使用 BSD 许可证,因此对研究和商业用途均免费。它具备 C++、Python 和 Java 接口,支持 Windows、Linux、Mac OS、iOS 和 Android 系统。OpenCV 旨在提高计算效率,专注于实时应用。它使用优化的 C/C++写成,能够有效利用多核处理。此外,在 OpenCL 的加持下,OpenCV 可以利用底层异构计算平台的硬件加速。OpenCV 应用广泛,目前在全世界约有 4.7 万用户,下载量约为 1400 万。

\"image\"

可以说 OpenCV 是 CV 领域开发者与研究者的必备工具包,Mask-RCNN 等很多开源项目都依赖于这个工具包。现在距离3.0版本的发布已经过去三年多,OpenCV 4.0 final版本终于于近日发布,这也是4.x版本线的第一个稳定版本,它进一步完善了核心接口,并添加了二维码检测器、ONNX 转换格式等新特点。

重要更新如下:

\"image\"

  • OpenCV 4.0 现在是基于C++ 11的库,因此编译器需要与C++ 11兼容。所使用的CMake需要是3.5.1以上版本。
  • OpenCV 1.x 中大量C的API已经被移除,受影响的模块包括objdetect、photo、video、videoio、imgcodecs、calib3d。
  • core 模块中的 Persistence(用于存储和加载 XML、YAML 或 JSON 格式的结构化数据)已经完全基于C++重新实现,因此这里的C API也被移除了。目前,base64支持尚未完成(仅支持加载base64编码的XML和YAML)。 此外,存储在FileNode中的序列的随机访问是慢速O(N)操作;使用cv :: FileNodeIterator可以做更快速的顺序访问。从积极的方面来说,加载FileStorage比原来的实现方法节省了3-6倍的内存。

\"image\"

\"image\"

  • 针对DNN的改进
    • 增加对Mask-RCNN的支持,官方提供了操作指南Python样例
    • 集成ONNX解析器。当前版本的OpenCV支持许多流行的分类网络,部分支持YOLO对象检测网络(ONNX版本的YOLO缺少一些提供矩形列表的最终图层)。
    • 进一步提升使用英特尔DLDT构建的DNN模块的性能。DLDT最近已经正式开源。 请参阅指南了解如何构建和使用支持DLDT的OpenCV。
    • 添加实验性的Vulkan后端
    • 修复了AMD和NVIDIA GPU上的OpenCL加速问题。 现在,用户可以直接为模型启用DNN_TARGET_OPENCL,无需额外的环境变量。不过需要注意的是,DNN_TARGET_OPENCL_FP16仅在英特尔GPU上做了测试,因此仍需要额外的标志。
    • 为OpenCV支持的最流行的深度学习网络添加了快捷方式。开发者可以指定模型的别名,从而跳过预处理参数甚至模型路径的设置!下面是一个操作示例,原来的做法是:
   python object_detection.py --model    opencv_face_detector.caffemodel --config    opencv_face_detector.prototxt --mean 104 177 123 --width 300 --height 300

现在只需要:

   python object_detection.py opencv_fd

\"image\"

  • 添加了新模块G-API,它可作为基于图的高效图像处理流程的引擎。详细信息可以参见Graph API(G-API)页面

\"image\"

  • 实现了流行的Kinect Fusion算法并集成到opencv_contrib/rgbd模块,同时针对CPU 和 GPU (OpenCL) 做了优化。为了使实时样本正常工作,我们在opencv/videoio模块中添加了对Kinect 2的支持。在4.0 beta版本的代码中已经对iGPU做了加速,从而使得高分辨率的情况下(512x512x512集成量)性能提升了3倍。

  • objdetect 模块中添加了二维码检测器和解码器,可以参考这里的代码示例

  • 将高效、高质量的 DIS dense optical flow 算法从 opencv_contrib迁移到video模块。
    此外,OpenCV 4.0性能也有所提升,图像处理操作可实现15%-30%的速度提升。

以下是目前 OpenCV 支持的一些框架:

  • Caffe
  • TensorFlow
  • Torch
  • Darknet
  • ONNX 交换格式的模型

最后附上OpenCV 4.0发布地址:https://opencv.org/opencv-4-0-0.html


会议推荐:12月20-21,AICon将于北京开幕,在这里可以学习来自Google、微软、BAT、360、京东、美团等40+AI落地案例,与国内外一线技术大咖面对面交流。

2017-04-13 19:33:13 VictoriaW 阅读数 2137
  • OpenVINO计算机视觉—实例实战

    手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。 课程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个课程准备精细,每一课都避免千篇一律,前一课有对后一课的预告,后一课有对前一课的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。 基本提纲: 1、课程综述、环境配置 2、OpenVINO范例-超分辨率(super_resolution_demo) 3、OpenVINO范例-道路分割(segmentation_demo) 4、OpenVINO范例-汽车识别(security_barrier_camera_demo) 5、OpenVINO范例-人脸识别(interactive_face_detection_demo) 6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo) 7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo) 8、NCS和GOMFCTEMPLATE 9、课程小结,资源分享

    343 人正在学习 去看看 禾路

我下载的是Stasm 4.1.0版本。

stasm文件夹

包含的是模型的实现。主要的源码文件是 stasm_lib.cpp,其中的函数stasm_search_single()是主要接口函数,在给定的一张人脸图片中搜索landmark点。

1、MOD_1文件夹对ASM进行初始化,给出特征向量、特征值以及对b的约束值,是一个已经训练好的模型。
MOD_1/initasm.cpp:
函数:

  • void InitMods( // initialize 一个 ASM model
    vec_Mod& mods, // out: ASM model (only one model in this version of Stasm)
    const char* datadir) // in: directory of face detector files

2、Shapemod.cpp:
变量:

  • static const int SHAPEHACK_MINPYRLEV = 2;

函数:

  • static void LimitB(
    VEC& b, // io: eigvec weights
    const VEC& eigvals, // in
    double bmax) // in

    对b约束到bmax * sqrt(lambda_i)

  • Shape ConformShapeToMod( // Return a copy of inshape conformed to the model
    VEC& b, // io: eigvec weights, 2n x 1
    const Shape& inshape, // in: the current position of the landmarks
    const Shape& meanshape, // in: n x 2
    const VEC& eigvals, // in: neigs x 1
    const MAT& eigvecs, // in: 2n x neigs
    const MAT& eigvecsi, // in: neigs x 2n, inverse of eigvecs
    const double bmax, // in: for LimitB
    const VEC& pointweights) // in: contribution of each point to the pose

    这个函数拟合模型到新的形状,是形状模型中非常重要的一步。

3、asm.cpp:

  • typedef vector<const Mod*> vec_Mod;

类Mod:用来找到landmark点的ASM模型
成员变量:

成员函数:

构造函数:

  • Shape ModSearch_( // returns coords of the facial landmarks
    const Shape& startshape, // in: startshape roughly positioned on face
    const Image& img, // in: grayscale image (typically just ROI)
    const Shape* pinnedshape=NULL) // in: pinned landmarks, NULL if nothing pinned

4、stasm_lib.cpp
变量:

  • static vec_Mod mods_g; // the ASM model(s)
  • static FaceDet facedet_g; // the face detector

  • static Image img_g; // the current image

函数:

  • int stasm_search_single( // wrapper for stasm_search_auto and friends
    int* foundface, // out: 0=no face, 1=found face
    float* landmarks, // out: x0, y0, x1, y1, ..., caller must allocate
    const char* img, // in: gray image data, top left corner at 0,0
    int width, // in: image width
    int height, // in: image height
    const char* imgpath, // in: image path, used only for err msgs and debug
    const char* datadir) // in: directory of face detector files

    根据输入的图片数据及信息,得到其中的landmark点

  • int stasm_open_image_ext( // extended version of stasm_open_image
    const char* img, // in: gray image data, top left corner at 0,0
    int width, // in: image width
    int height, // in: image height
    const char* imgpath, // in: image path, used only for err msgs and debug
    int multiface, // in: 0=return only one face, 1=allow multiple faces
    int minwidth, // in: min face width as percentage of img width
    void* user) // in: NULL or pointer to user abort func

apps文件夹

包含了各种测试程序。

2007-04-25 10:56:00 jonfei 阅读数 2636
  • OpenVINO计算机视觉—实例实战

    手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。 课程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个课程准备精细,每一课都避免千篇一律,前一课有对后一课的预告,后一课有对前一课的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。 基本提纲: 1、课程综述、环境配置 2、OpenVINO范例-超分辨率(super_resolution_demo) 3、OpenVINO范例-道路分割(segmentation_demo) 4、OpenVINO范例-汽车识别(security_barrier_camera_demo) 5、OpenVINO范例-人脸识别(interactive_face_detection_demo) 6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo) 7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo) 8、NCS和GOMFCTEMPLATE 9、课程小结,资源分享

    343 人正在学习 去看看 禾路
为了用计算机来表示和处理颜色,必须采用定量的方法来描述颜色,即建立颜色模型。目前广泛使用的颜色模型有三类:计算颜色模型、工业颜色模型、视觉颜色模型。计算颜色模型又称为色度学颜色模型,主要应用于纯理论研究和计算推导;工业颜色模型侧重于实际应用的实现技术;视觉颜色模型用于与人直接接口的颜色模型和控制。
    1、计算颜色模型有CIE的RGB、XYZ、Luv、LCH、LAB、UCS、UVW。
    2、工业颜色模型NTSC的RGB、YUV、YIQ、CMYK、YCbCr。
    3、视觉颜色模型有HS*系列,包含HSL、HSV(B)。


常见Color Formula/Matrix如下:

 1、RGB<->CIE XYZ
    a、RGB<->CIE XYZ REC601
     |X|    | 0.607  0.174  0.201|    |R|
     |Y| = | 0.299  0.587  0.114| * |G|
     |Z|    | 0.000  0.066  1.117|    |B|

     |R|    | 1.910  -0.532  -0.288|    |X|
     |G| = |-0.985   1.999  -0.028| * |Y|
     |B|    | 0.058  -0.118   0.898|    |Z|

   b、RGB<->CIE XYZ REC709
     |X|    | 0.412  0.358  0.180|    |R|
     |Y| = | 0.213  0.715  0.072| * |G|
     |Z|    | 0.019  0.119  0.950|    |B|

     |R|    | 3.241  -1.537  -0.499|    |X|
     |G| = |-0.969   1.876  -0.042| * |Y|
     |B|    | 0.056  -0.204   1.057|    |Z|

   c、RGB<->CIE XYZ ITU
     |X| = | 0.431  0.342  0.178|    |R|
     |Y| = | 0.222  0.707  0.071| * |G|
     |Z| = | 0.020  0.130  0.939|    |B|

     |R|    | 3.063  -1.393  -0.476|   |X|
     |G| = |-0.969   1.876   0.042| * |Y|
     |B|    | 0.068  -0.229   1.069|    |Z|

2、RGB<->CMYK
  a、RGB -> CMYK 
   K = min(1-R, 1-G, 1-B)
   C = (1-R-K) / (1-K)
   M = (1-G-K) / (1-K)
   Y = (1-B-K) / (1-K)

b、CMYK->RGB
   R = 1 - min(1, C *(1-K) + K)
   G = 1 - min(1, M *(1-K) + K)
   B = 1 - min(1, Y *(1-K) + K)

3、RGB->CIE RGB
|Rcie|    | 1.167 -0.146 -0.151|   |R|
|Gcie| = | 0.144  0.753  0.159| * |G|
|Bcie|    |-0.001  0.059  1.128|   |B|

4、CIE XYZ->CIE Lab
    D65   xn = 0.312713  ,  yn = 0.329016  

    L = 116 * ( ( Y / Yn ) ^ ( 1 / 3 ) )     Y/Yn >  0.008856
    L = 903.3 * Y / Yn                          Y/Yn <= 0.008856

    a = 500*(f(X/Xn)-f(Y/Yn))
    b = 200*(f(Y/Yn)-f(Z/Zn))

5、RGB->HSV

  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

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

 


6、RGB<->YIQ
    YIQ是北美电视系统(NTSC)所采用的。Y指亮度,I和Q指色调,描述图像的色彩和饱和度。

|Y|      | 0.299  0.587  0.114|    |R|
|I|  =  | 0.596 -0.274 -0.322| * |G|
|Q|      | 0.211 -0.523  0.312|    |B|
  
|R|    | 1    0.956   0.621|    |Y|
|G| = | 1  -0.272  -0.647| * |I|
|B|    |-1  -1.106  -1.703|   |Q|

7、RGB<->YUV
    YUV是欧洲的电视系统所采用(PAL)。Y指亮度,U和V指色调。
|Y|    | 0.299  0.587   0.114|   |R|
|U| = |-0.148 -0.289  0.437| * |G|
|V|    | 0.615 -0.515  -0.100|   |B|
  
|R|    | 1   0          1.140|      |Y|
|G| = | 1  -0.395  -0.581| *   |I|
|B|    |-1   2.032    0     |      |Q|


8、RGB<->YCbCr
    JPEG采用的颜色模型是YCbCr。它是从YUV颜色模型衍生来的。其中Y指亮度,而Cb和Cr是将U和V做少量的调整而得来得。

|Y  |    | 0.2990  0.5870   0.1140  0  |    |R|
|Cb|    |-0.1687 -0.3313  0.5000  128| * |G|
|Cr | = | 0.5000 -0.4187 -0.0813  128|   |B|
|1  |    | 0           0            0    1   |    |1|

|R|    | 1   1.40200   0         |    |Y        |
|G| = | 1  -0.34414  -0.71414| * |Cb-128|
|B|     | 1   1.77200   0      |    |Cr-128 |


标准参考代码:
http://www.easyrgb.com/math.php?MATH=M22#text22
 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=466948


[收藏到我的网摘]   still发表于 2005年08月28日 22:49:00



特别推荐:

 

#  flyb 发表于2007-02-28 11:08:02  IP: 222.93.94.*
不好意思,最近想做个分色的程序,还不是很清楚,想问一个简单的问题:

我在你链的标准代码网页中没找到RGB->CMYK的转换代码,是不是需要将RGB->CMY->CMYK呀?

还有:
//RGB values = 0 ÷ 255
//CMY values = 0 ÷ 1

是什么意思。

期盼你的回答,谢谢!


#  still05017 发表于2007-02-28 21:04:14  IP:
1、用上面的2.a的公式就可以了:
K = min(1-R, 1-G, 1-B)
C = (1-R-K) / (1-K)
M = (1-G-K) / (1-K)
Y = (1-B-K) / (1-K)
上面公式中RGB颜色分量的范围是0-1,如果是0-255,把RGB颜色分量分别除以255归一化就可以了。用标准代码RGB->CMY->CMYK,最终实际上就是上面这个公式,你可以自己推导一下看看。
2、
//RGB values = 0 ÷ 255
//CMY values = 0 ÷ 1
就是指RGB颜色分量的范围是 0 - 255;CMY颜色分量的范围是 0 - 1。

#  flyb 发表于2007-03-01 13:07:35  IP:
2.a 与 RGB->CMY->CMYK是一样

我在另一个地方看见了这样一个公式,和你的方法算的结果不一样,很疑惑

RGB->CMYK的转换分3步完成: (以下F代表满色,8位时,=255)
C1=F-R
M1=F-G
Y1=F-B

K=MIN(C1,M1,Y1)

C=C1-K
M=M1-K
Y=Y1-K

#  flyb 发表于2007-03-01 13:16:52  IP: 222.93.94.*
我还想向你请教一个问题:

RGB在计算机中是3个字节,每个分量一个字节,值是0~255方式存储的

那CMYK在计算机中的存储形式是如何呢

好像说CMYK是指这四种颜色调在一起的比例?(这理解对吗?),我看见有些地方说是4个字节存储,这种说法对吗?

如果是这样:假设R-100 G-100 B-100
用你的方法算出来是:K=0.392 C=0.357 M=0.357 Y=0.357

超出100%了

不好意思,因为刚学,问得问题可能比较笨,呵呵。。。
可是不懂呀

等待你的回答,谢谢!



#  flyb 发表于2007-03-01 13:40:26  IP: 222.93.94.*
我理解错了CMYK:
为每个像素的每种印刷油墨指定一个百分比值。为最亮(高光)颜色指定的印刷油墨颜色百分比较低,而为较暗(暗调)颜色指定的百分比较高。

那CMYK的存储形式是怎样的呢?

你的算法和他的算法是一样的吗?

#  flyb 发表于2007-03-01 13:52:45  IP: 222.93.94.*
我现在想做的事是将一个RGB彩色图转换成CMYK四个图,我应该如何做呢?


#  still05017 发表于2007-03-01 22:35:37  IP:
支持CMYK颜色模型的图象格式有tiff和jpeg(还有就是ps的一些图象格式),在图象格式中CMYK是4个字节存储;RGB彩色图转CMYK四个图,把RGB->CMYK后,要得到哪个通道的图象,保留那个通道,然后把其他通道的值都取为0,然后保存啊。你想得到的CMYK四个分色图是想采用RGB颜色模型还是CMYK颜色模型保存?

#  still05017 发表于2007-03-02 22:50:38  IP:
1、引用Tiff6的一段话:
Note: there is no single method of converting RGB data to CMYK data and back.In a perfect world, something close to cyan = 255-red, magenta = 255-green, and
yellow = 255-blue should work; but characteristics of printing inks and printing presses, economics, and the fact that the meaning of RGB itself depends on other
parameters combine to spoil this simplicity.

RGB到CMYK本来就不是一个线性的映射关系,一个是发光的颜色模型,一个是反光的颜色模型,表示油墨的浓度,公式不同效果也不同,网上的公式很多的。如果简单点的话,可以用下面这对,第一个公式也是你提到的。
RGB->CMYK:
k = min((255-r), (255-g), (255-b));
c = 255-r-k;
m = 255-g-k;
y = 255-b-k;

CMYK->RGB:
r = (255-c)*(255-k)/255;
g = (255-m)*(255-k)/255;
b = (255-y)*(255-k)/255;

2、CMYK在TIFF文件中,是4字节存储,每个通道的取值范围(0-255,0对应0%的浓度,255对应100%的浓度)。在电脑上显示CMYK图象还是要CMYK->RGB,然后显示的。我昨天问你“CMYK四个分色图是想采用RGB颜色模型还是CMYK颜色模型保存?”,如果用RGB颜色模型保存,要把CMYK->RGB,然后保存的。至于如何用TIFF保存CMYK图象,看一下TIFF6的Spec,里面有CMYK Images的说明,比较简单,你自己看看吧!
 
2008-04-05 03:13:00 johnny_83 阅读数 3604
  • OpenVINO计算机视觉—实例实战

    手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。 课程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个课程准备精细,每一课都避免千篇一律,前一课有对后一课的预告,后一课有对前一课的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。 基本提纲: 1、课程综述、环境配置 2、OpenVINO范例-超分辨率(super_resolution_demo) 3、OpenVINO范例-道路分割(segmentation_demo) 4、OpenVINO范例-汽车识别(security_barrier_camera_demo) 5、OpenVINO范例-人脸识别(interactive_face_detection_demo) 6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo) 7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo) 8、NCS和GOMFCTEMPLATE 9、课程小结,资源分享

    343 人正在学习 去看看 禾路

    为了用计算机来表示和处理颜色,必须采用定量的方法来描述颜色,即建立颜色模型。目前广泛使用的颜色模型有三类:计算颜色模型、工业颜色模型、视觉颜色模型。计算颜色模型又称为色度学颜色模型,主要应用于纯理论研究和计算推导;工业颜色模型侧重于实际应用的实现技术;视觉颜色模型用于与人直接接口的颜色模型和控制。

1、   计算颜色模型有CIE的RGB、XYZ、Luv、LCH、LAB、UCS、UVW。

2、   工业颜色模型NTSC的RGB、YUV、YIQ、CMYK、YCbCr。

3、   视觉颜色模型有HS*系列,包含HSL、HSV(B)。

常见Color Formula/Matrix如下:

1、 RGB<->CIE XYZ
a、RGB<->CIE XYZ REC601
  |X|   | 0.607  0.174  0.201|   |R|
  |Y| = | 0.299  0.587  0.114| * |G|
  |Z|   | 0.000  0.066  1.117|   |B|

  |R|   | 1.910  -0.532  -0.288|   |X|
  |G| = |-0.985   1.999  -0.028| * |Y|
  |B|   | 0.058  -0.118   0.898|   |Z|

b、RGB<->CIE XYZ REC709
   |X|   | 0.412  0.358  0.180|   |R|
   |Y| = | 0.213  0.715  0.072| * |G|
   |Z|   | 0.019  0.119  0.950|   |B|

   |R|   | 3.241  -1.537  -0.499|   |X|
   |G| = |-0.969   1.876  -0.042| * |Y|
   |B|   | 0.056  -0.204   1.057|   |Z|

c、RGB<->CIE XYZ ITU
   |X| = | 0.431  0.342  0.178|   |R|
   |Y| = | 0.222  0.707  0.071| * |G|
   |Z| = | 0.020  0.130  0.939|   |B|

   |R|   | 3.063  -1.393  -0.476|   |X|
   |G| = |-0.969   1.876   0.042| * |Y|
   |B|   | 0.068  -0.229   1.069|   |Z|

2、 RGB<->CMYK
a、RGB -> CMYK 
   K = min(1-R, 1-G, 1-B)
   C = (1-R-K) / (1-K)
   M = (1-G-K) / (1-K)
   Y = (1-B-K) / (1-K)
b、CMYK->RGB
   R = 1 - min(1, C *(1-K) + K)
   G = 1 - min(1, M *(1-K) + K)
   B = 1 - min(1, Y *(1-K) + K)

3、 RGB->CIE RGB
|Rcie|   | 1.167 -0.146 -0.151|   |R|
|Gcie| = | 0.144  0.753  0.159| * |G|
|Bcie|   |-0.001  0.059  1.128|   |B|

4、 CIE XYZ->CIE Lab
D65   xn = 0.312713  ,  yn = 0.329016
L = 116 * ( ( Y / Yn ) ^ ( 1 / 3 ) )     Y/Yn >  0.008856
L = 903.3 * Y / Yn                       Y/Yn <= 0.008856
a = 500*(f(X/Xn)-f(Y/Yn))
b = 200*(f(Y/Yn)-f(Z/Zn))

5、 RGB->HSV
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
若 H<0,则 H=H+360
使用上面从 0° 到 360° 变化的公式计算色调( hue)值,确保它们被 2 除后能试用于8位。

6、 RGB<->YIQ

YIQ是北美电视系统(NTSC)所采用的。Y指亮度,I和Q指色调,描述图像的色彩和饱和度。
    |Y|      | 0.299  0.587  0.114|   |R|
    |I|  =  | 0.596 -0.274 -0.322| * |G|
    |Q|      | 0.211 -0.523  0.312|   |B|
  
    |R|    | 1   0.956   0.621|   |Y|
    |G| =  | 1  -0.272  -0.647| * |I|
    |B|    |-1  -1.106  -1.703|   |Q|

7、 RGB<->YUV

YUV是欧洲的电视系统所采用(PAL)。Y指亮度,U和V指色调。
|Y|    | 0.299  0.587  0.114 |   |R|
|U| =  |-0.148 -0.289  0.437 | * |G|
|V|    | 0.615 -0.515  -0.100|   |B|
  
|R|    | 1   0       1.140|     |Y|
|G| =  | 1  -0.395  -0.581| *   |I|
|B|    |-1   2.032    0   |     |Q|

8、 RGB<->YCbCr

JPEG采用的颜色模型是YCbCr。它是从YUV颜色模型衍生来的。其中Y指亮度,而Cb和Cr是将U和V做少量的调整而得来得。
   |Y |   | 0.2990  0.5870   0.1140  0 |   |R|
   |Cb|   |-0.1687 -0.3313  0.5000  128| * |G|
   |Cr| = | 0.5000 -0.4187 -0.0813  128|   |B|
   |1 |   | 0       0         0    1   |   |1|

   |R|    | 1   1.40200   0      |   |Y     |
   |G| =  | 1  -0.34414  -0.71414| * |Cb-128|
   |B|    | 1   1.77200   0      |   |Cr-128|

 

 
没有更多推荐了,返回首页