图像的表示方法

  • 二值图像

二值图像通常用一个数组来描述,像素值不是0就是1,0表示黑色,1表示白色,优点是占用空间最小。

  • 灰度图像

灰度图像也称为单色图像,通常也是用一个二维数组描述,8位表示一个像素,0表示黑色,255表示白色,1~254表示不同深度的颜色。uint类型像素在【0, 255】或者【0, 65535】范围,double类型像素在【0.0, 1.0】范围。

  • RGB彩色图像

RGB图像就是我们常说的真彩色,利用3个大小相同的二维数组表示像素,3个数组分别表示R(红色),G(绿色),B(蓝色)这三个分量,通过这3种基本颜色可以合成任意颜色。每一种颜色占8位,范围【0, 255】。

  • 索引图像

索引图像,顾名思义,就是把像素值直接作为RGB调色板下标的图像。索引图像包括一个数据矩阵X和一个颜色映射map。X储存像素值,map是一个m*3的数据矩阵,储存每个像素值对应的三种颜色值,范围【0, 1】,double类型。

MATLAB图像类型转换

因为MATLAB方便,所以就以MATLAB为主要例子,常用函数如下:

gray2ind: 灰度转索引imbinarize: 灰度 转二值 %im2bw已经不推荐用了ind2gray: 索引转灰度ind2rgb: 索引转真彩色mat2gray: 数值矩阵转灰度rgb2gray: 真彩色转灰度rgb2ind: 真彩色转索引dither: 图像抖动,灰度变二值或者真彩色变索引

具体代码案例:

close all;clear all;clc;img = imread('data/pkq.jpeg');gray = rgb2gray(img); % rgb转灰度bw = imbinarize(gray); % 必须是二维图像,所有先要把rgb转为灰度再转二值[ind, map] = rgb2ind(img, 32);% rgb转索引% map = colorcube(128);% ind2 = rgb2ind(img, map);subplot(2,2,1);imshow(img);title('原图像');subplot(2,2,2);imshow(gray);title('灰度图像');subplot(2,2,3);imshow(bw);title('二值图像');subplot(2,2,4);imshow(ind, map);title('索引图像');imwrite(ind, map,'data/pkg.png'); % 储存图像

c++实现图像类型转换

opencv主要用到的转化函数为:

cvtColor( InputArray src, OutputArray dst, int code, int dstCn=0 ); 

第一个参数是输入图像,第二个是输出图像,第三个是颜色空间转换的标识符,第四个是参数为目标图像的通道,通道类型很多。常用的就是彩色和灰度的互转:

COLOR_BGR2GRAY = 6 彩色到灰度COLOR_GRAY2BGR = 8 灰度到彩色

上一篇已经有注释了,所以就不重复注释,具体代码如下:

#include #include #include using namespace cv; // 使用cv命名空间int main(int argc, char ** argv){ Mat img = imread("data/images/pkq.jpeg"); // 读取图像,如果没读取到就报错 if (img.empty()){ std::cerr << " Condn't not load image " << std::endl; return -1; } namedWindow("image

cmyk rgb 数值转换_计算机视觉学习笔记2 图像类型转换相关推荐

  1. matlab 增加图像对比度_计算机视觉学习笔记6 图像直方图与直方图均衡化

    图像的直方图 图像直方图表示图像中每一种像素的个数,反映了图像中每种像素值出现的频率,是图像的基本统计特征之一,具有平移,旋转,缩放不变性,广泛应用于图像处理的各个领域.比如灰度图像的阈值分割,基于颜 ...

  2. matlab 图像读取长宽_计算机视觉学习笔记1 图像读取显示和尺寸变换

    第一天,图像的读取,显示和尺寸变换 c++,python,MATLAB各实现一遍,以这个头骨图像为例吧 c++调用OpenCv实现图像显示和尺寸变换 c++用的编译器为clion,因此需要先配置cma ...

  3. Python中曲率与弯曲的转换_黎曼几何学习笔记(3)——共形数量曲率与高斯曲率...

    参考文献: (GTM171)Peter<Riemannian Geometry>,Richard Mikula<Notes on the Yamabe Flow>,夏青< ...

  4. 图像坐标:我想和世界坐标谈谈(A) 【计算机视觉学习笔记--双目视觉几何框架系列】

    玉米竭力用轻松具体的描述来讲述双目三维重建中的一些数学问题.希望这样的方式让大家以一个轻松的心态阅读玉米的<计算机视觉学习笔记>双目视觉数学架构系列博客.这个系列博客旨在捋顺一下已标定的双 ...

  5. Opencv学习笔记(八) -- 图像色彩空间转换

    1.常见图像色彩空间 RGB RGB色彩模式是工业界的一种颜色标准,是通过对红(R).绿(G).蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道 ...

  6. Caffe学习笔记4图像特征进行可视化

    Caffe学习笔记4图像特征进行可视化 本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权 欢迎关注我的博客:http://blog.csdn.net/hit201 ...

  7. C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)

    C++下opencv学习笔记(一)(图像的简单读取丶显示与存储) 前言 学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门.觉得自己基础已经有了可以 ...

  8. OpenCV学习笔记(九)——图像轮廓(下)

    <OpenCV轻松入门:面向Python>学习笔记(九) 1-3 查找并绘制轮廓.矩特性及Hu矩 4-5 轮廓拟合及凸包 6. 利用形状场景算法比较轮廓 6.1 计算形状场景距离 6.2 ...

  9. 【C#编程基础学习笔记】4---Convert类型转换

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...

  10. rgb 光谱 转换_使用深度学习将RGB图像转换为高光谱

    rgb 光谱 转换 Finding an applicable cost-effective way to convert and use hyperspectral images. 寻找一种适用的具 ...

最新文章

  1. python语言使用什么语句实现上下文管理协议_Python 技巧探究:上下文管理器和with语句...
  2. 玩转Mixly – 6、Arduino AVR编程 之 文本
  3. 解决安装DEB包时报错
  4. 适合手机端的ckeditor样式_抖音运营干货(三):9款手机视频剪辑APP,让你轻松玩转后期!...
  5. LeetCode 64. 最小路径和(DP)
  6. php多进程并发,php多进程模拟并发事务
  7. html界面左侧没有顶格,求解,html页面顶部有空白??
  8. qml入门学习(八):通过loader对象动态加载和移除组件
  9. DataParallel work on cpu
  10. 计算器如何输出log以2为底的对数(利用对数log换底公式)
  11. hdu 1712 ACboy needs your help (DP)
  12. 基于区块链的食品安全溯源系统
  13. openRefine使用报告
  14. Java 水印操作的设计与实现
  15. Java多线程并发面试
  16. 简单实现购物车相同物品累加
  17. 如果说这个世界不是真实存在的,只是一段代码,迄今为止你发现了哪些bug?
  18. 记一次修改DiyBox的经历(openwrt固件解包与打包)
  19. No.72-HackTheBox-windows-Fighter-Walkthrough渗透学习
  20. Baklib推荐:关于建设企业知识管理的有效方法

热门文章

  1. 16种系统测试方法概念+测试要点
  2. 8. OSPF的NSSA详解
  3. Matlab中return语句
  4. cad插入块_怎么才能将两张CAD图纸合并为一张?
  5. 世界上公认最快的学习法 - 弗曼学习法
  6. android 应用开启以后,动态检测并或者相机权限。
  7. dvr行业的linux
  8. 【HAVENT原创】Spring Boot + Spring-Kafka 异步配置
  9. 医院预约挂号小程序 开题报告(基于微信小程序毕业设计题目选题课题)
  10. 每日一记:win10无法设置上网代理