标签:pre int bsp table 读书 字节 笔记 线性 运算
如果图像是3通道,深度为1个字节,则每个像素有256*256*256种可能值,这么多的可能值会对算法性能造成严重影响。利用颜色空间缩减就能解决这个问题,例如将颜色值0~9取为新值0,10~19取为10,以此类推,这样每个像素有26*26*26种可能值,比上面的可能值要小很多。
P_New = ( P_Old / divide ) * divide (P表示像素值)
如果对原图像每个像素都进行上面的公式运算,运算量将非常大。可以将0~255这256种情况对应的新值计算出来,存放在table中,然后将原图像的像素值按照table表取出新值即可。
uchar table[256];
for( int i=0; i<256; i++ )
table[i] = ( i / divide ) * divide;
P_New = table[ P_New ];
OpenCV提供了LUT函数帮我们完成上面的处理。
示例:
1 Mat srcImage = imread("test.jpg"); 2 3 Mat lookUpTable(1,256,CV_8U); 4 uchar* p = lookUpTable.data; 5 for(int i=0; i<256; i++) 6 { 7 p[i] = i/30*30; 8 } 9 10 Mat destImage; 11 destImage.create(srcImage.size(),srcImage.type()); 12 13 LUT(srcImage,lookUpTable,destImage); 14 15 imshow("srcImage",srcImage); 16 imshow("destImage",destImage);
1 Mat srcImage = imread("test.jpg"); 2 Mat logoImage = imread("logo.png"); 3 //加载掩模(必须是灰度图) 4 Mat maskImage = imread("logo.png",0); 5 6 //设置感兴趣区域 7 Mat ROIImage = srcImage(Rect(20,20,logoImage.cols,logoImage.rows)); 8 9 logoImage.copyTo(ROIImage,maskImage); 10 11 imshow("srcImage",srcImage);
1、计算数组加权和:addWeighted()
标签:pre int bsp table 读书 字节 笔记 线性 运算
原文地址:http://www.cnblogs.com/justkong/p/7281208.html