ISP PIPLINE (八) RGB2YUV

what is the YUV?

暗电流来源1、YUV 是一种基本色彩空间, 人眼对亮度改变的敏感性远比对色彩变化大很多。亮度分量Y 要比色度分量U、V 重要得多。 所以, 可以适当地抛弃部分U、V分量, 达到压缩数据的目的。 YCbCr 是YUV 经过缩放和偏移的改动版,Y 表示亮度,Cr、Cb 表示色彩的色差, 分别是红色和蓝色的分量。

why does  transform RGB 2 YUV?

将RGB 转换为 YUV444, 在YUV 色彩空间上进行彩色噪声去除、 边缘增强等。

how to transform RGB 2 YUV?

ISP PIPLINE (八) RGB2YUV                              ISP PIPLINE (八) RGB2YUV

附一段简单代码:

#include <fstream>
#include <sstream>
#include <iostream>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>
#include <vector>
#include <ctime>
#pragma warning( disable : 4244 )
using namespace std;
using namespace cv;

#define WIDTH 4000
#define HEIGHT 3000

int main(int argc, char** argv)
{
	Mat imgMat = imread("111111.bmp");
	if (imgMat.empty())
		return -1;
	int cols = imgMat.cols;
	int rows = imgMat.rows;
	clock_t startTime, endTime;
	startTime = clock();
	for (int i = 0; i < rows; i++)
	{
		uchar* data = imgMat.ptr<uchar>(i);
		for (int j = 0; j < cols; j++)
		{
			data[3*j+2] = data[3*j] * 0.5 + data[3*j+1] * 0.4178 + data[3*j+2] * 0.0813;
			data[3*j+1] = data[3 * j] * 0.1678 + data[3*j+1] * 0.33113 + data[3*j+2] * 0.5;
			data[3*j+0] = data[3 * j] * 0.299 + data[3*j+1] * 0.587 + data[3*j+2] * 0.114;
		}
	}
	endTime = clock();
	cout << "consume time = " << double(endTime - startTime) << endl;
	resize(imgMat, imgMat, Size(200,200));
	imshow("44", imgMat);
	waitKey(0);

}
上一篇:Bug跟踪的流程


下一篇:解决微信浏览器无法使用window.location.reload()刷新页面