图像处理:比特平面分层

图像处理:比特平面分层

图像的深度
图像由像素构成,每个像素位数据占用位数即图像的深度,单通道(1字节)图像深度为8位对应opencv 8UC1,三通道(3字节)图像对应深度24,8UC3。1位图即二值图只有黑白两种颜色,不为0就为1。8位图有256种颜色从0(纯黑)到255(纯白)过渡。
比特平面分层
比特图像分层便是将灰度图像的像素位数进行分别读取,一幅8比特图像可考虑为由8个1比特平面组成。
一副8比特灰度图由八个1比特平面组成,如一个十进制灰度194,它的二进制表示为: 11000010,,则从最高阶比特平面开始,这个像素点对应的灰度值分别为1、1、0、0、0、0、1、0。
8th 比特平面
比特值为0 —— 对应灰度值0 ~ 127
比特值为1 —— 对应灰度值128 ~ 255
7th 比特平面
比特值为0 —— 对应灰度值0 ~ 63、128 ~ 191
比特值为1 —— 对应灰度值64 ~ 127、192 ~ 255
6th比特平面
比特值为0 —— 对应灰度值0 ~ 31 64 ~ 95、128 ~ 159 、192 ~ 223
比特值为1 —— 对应灰度值32 ~ 63、96 ~ 127 、160 ~ 191 、224 ~ 255
5th比特平面
比特值为0 —— 【0,15】【32,47】【64,79】【96,111】【128,143】【160,175】【192,207】【224,239】
比特值为1 —— 【16,31】【48,63】【80,95】【110,127】【144,159】【176,191】【208,221】【240,255】
4th比特平面
比特值为0 —— 【0,7】【16,23】【32,39】【48,55】。。。【239,247】
比特值为1 —— 【8,15】【24,31】【40,47】【56,63】。。。【248,255】
3rd比特平面
比特值为0 —— 【0,3】【8,11】【16,19】【24,27】.。。。【248,251】
比特值为1 —— 【4,7】【12,15】【20,23】【28,31】。。。【252,255】
2nd比特平面
比特值为0 —— 【0,1】【4,5】【8,9】【12,13】。。。【252,253】
比特值为1 —— 【2,3】【6,7】【10,11】【14,15】。。。【254,255】
1st比特平面
比特值为0——0、2、4、6、8、10、…、254
比特值为1——1、3、5、7、9、11、…、255

应用
①突出特定比特层(灰度级范围)来突出整个图像的外观。
②图像压缩:如将图像中5/6/7/8阶比特平面的信息保留后将图像重建,可通过50%的储存量体现图像绝大部分的外观信息;图像重建的过程是将第n个比特平面的像素值乘以2的n-1次幂后叠加。
代码

/*bit平面分层*/
/*十进制数转二进制数*/
void num2Binary(int num, int b[8]){ 
	int i;
	for ( i = 0; i < 8; i++){
		b[i] = 0;
	}
	i = 0;
	while (num!=0){
		b[i] = num % 2;
		num = num / 2;
		i++;
	}
}

/***************************
num_bit - 指定bit平面
num_bit = 1~8
num_bit=1,即输出第1个Bit平面
****************************/
void Bitplane_stratification(cv::Mat& src,cv::Mat& B , int num_Bit){
	int b[8];//8个二进制bit位
	if (src.channels()>1)
		cv::cvtColor(src, src, CV_RGB2GRAY);
	B.create(src.size(), src.type()); 
	for (int i = 0; i < src.rows; i++){
		const uchar* ptr_src = src.ptr<uchar>(i);
		uchar* ptr_B = B.ptr<uchar>(i);
		for (int j = 0; j < src.cols; j++){
			num2Binary(ptr_src[j], b);
			ptr_B[j] = b[num_Bit - 1]*255;  //0和1灰度差别太小,乘255便于视觉观察
		}
	}
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值