PhotoShop算法实现--色彩通道(九)

PhotoShop算法实现--色彩通道(九)

[email protected]

http://blog.csdn.net/kezunhai

           一个通道同一个图像层之间的最根本的区别在于:图层的各个像素点的属性是以红、绿、蓝三原色的数值来表示的,而通道层中的像素颜色是由一组原色的亮度来组成的。通俗点说:通道中只有一种颜色的不同亮度,是一种灰度图像。

通过通道可以实现三种不同的图像效果:

       (1)轮换通道(Rotate Channel):将一副图像的R、G、B三分量进行轮换输出显示,即将原来的绿色分类替换成红色分量,将原来的蓝色分量替换成绿色分量,原来的红色分量替换成蓝色。

         实现代码如下:

// 色彩轮换
void PhotoShop::RotateChannel(Mat& img, Mat &gImg)
{
	if ( gImg.empty())	
		gImg.create(img.rows, img.cols, CV_8UC3);		

	gImg = cv::Scalar::all(0);

	int i, j;
	Size size = img.size();
	int chns = img.channels();

	//int chns = gImg.channels();

	if (img.isContinuous() && gImg.isContinuous())
	{
		size.width *= size.height; 
		size.height = 1;
	}

	for (  i= 0; i
         实现效果:

PhotoShop算法实现--色彩通道(九)_第1张图片

        (2)提取通道(Extract Channel):将用户指定的通道提取出来,用一幅灰度图像显示。

            实现代码:

// ChannelNo:从1开始
void PhotoShop::ExtractChannel(Mat& img, Mat& gImg, int ChannelNo)
{
	if ( gImg.empty())	
		gImg.create(img.rows, img.cols, CV_8UC1);		

	gImg = cv::Scalar::all(0);

	int i, j;
	Size size = img.size();
	int chns = img.channels();

	//int chns = gImg.channels();

	if (img.isContinuous() && gImg.isContinuous())
	{
		size.width *= size.height; 
		size.height = 1;
	}

	for (  i= 0; i
        实现效果:

PhotoShop算法实现--色彩通道(九)_第2张图片


          (3)过滤通道(Filtered Channel):保留用户指定的通道,使之只显示指定的色彩通道,其他通道的颜色被删除。该种形式的实现算法与第二种类似,这里不再给出,可以参考上面。

作者:kezunhai 出处:http://blog.csdn.net/kezunhai 欢迎转载或分享,但请务必声明文章出处。

你可能感兴趣的:(PhotoShop算法实现,photoshop算法实现)