16BPP与24BPP的相互转换

本文介绍了一种从24BPP(每像素24位)到16BPP(每像素16位)及反之的图片格式转换方法,并通过示例代码展示了具体的实现过程。

今天写了一个裸机图片切换程序,图片数据是从别人的代码中拷贝出来的。移植到一半的时候老是觉得颜色不对,后来仔细阅读别人的代码发现别人显示是16BPP(65K)模式,而我的OK6410开发板设置的是24BPP模式。

经过仔细研究编码的区别最后解决了问题。在这里做个笔迹。

24BPP的结构是:前8位表示“红”,中8位表示“绿”,后8位表示“蓝”。如下所示:

RGB888 R7 R6 R5 R4 R3 R2 R1 R0   G7 G6 G5 G4 G3 G2 G1 G0   B7 B6 B5 B4 B3 B2 B1 B0

16BPP的结构是:前5位表示“红”,中6位表示“绿”,后5位表示“蓝”。如下所示:

16bit RGB656     R4 R3 R2 R1 R0  G5 G4 G3 G2 G1 G0    B4 B3 B2 B1 B0

----------------

24BPP -> 16BPP 的转换

24BPP R7 R6 R5 R4 R3 R2 R1 R0  G7 G6 G5 G4 G3 G2 G1 G0  B7 B6 B5 B4 B3 B2 B1 B01
16BPP          R7 R6 R5 R4 R3        G7 G6 G5 G4 G3 G2            B7 B6 B5 B4 B3

即取24BPP的RGB值的高位赋给16BPP。不过这种方法会影响显示精度,但是影响不大。

----------------

16BPP -> 24BPP 的转换

16BPP  R4 R3 R2 R1 R0         G5 G4 G3 G2 G1 G0      B4 B3 B2 B1 B0
24BPP  R4 R3 R2 R1 R0 0 0 0   G5 G4 G3 G2 G1 G0 0 0  B4 B3 B2 B1 B0 0 0 0

即取16BPP的RGB值赋给24BPP的高位。

void show_priture(const unsigned char *str)
{
	u16 hh, x, y, dd;
	int cc=0;
	u8 ll;
	u32 data;
	for (x = 0; x < 480; x++)
	{
		for (y = 0; y < 272; y++)
		{
			ll = *str;
			str++;
			hh = *str;
			str++;
			hh=hh<<8;
			dd=hh|ll;
			data = (( dd & 0xF800 ) << 8)|( (dd & 0x7E0) << 5)|(( dd & 0x1F ) << 3);
			PutPixel(x , y, data);
		}
	} 
}



### 通信业务模型如何通过仿真进行建模分析,尤其是泊松分布的关系 在通信系统的建模分析中,仿真技术提供了一种高效的手段,能够对复杂的网络行为进行再现、预测和优化。特别是在通信业务模型中,泊松分布被广泛用于描述事件的随机到达过程,例如用户请求、数据包发送、呼叫建立等。通过仿真,可以将理论模型转化为可执行的动态系统,从而验证设计假设、评估性能指标并指导实际部署。 在仿真建模中,泊松分布常用于模拟通信业务的到达过程。例如,在异构蜂窝网络中,用户设备的分布和干扰特性对网络性能有显著影响。通过泊松点过程(Poisson Point Process, PPP)及其扩展形式(如泊松洞过程 Poisson Hole Process, PHP)对基站和用户进行空间建模,可以推导出信干比(Signal to Interference Ratio, SIR)分布,从而分析网络覆盖率和容量性能[^1]。 在无线通信系统中,数据包的到达通常被建模为泊松过程,即单位时间内数据包到达的数量服从泊松分布。这种建模方式假设事件之间相互独立且具有恒定的平均到达率。例如,在LTE-M系统中,车载控制器轨旁设备之间的通信业务以泊松流的形式接入网络,且信号到达时间间隔和服务时间均服从负指数分布。该模型可进一步简化为M/M/1排队论模型,用于分析系统吞吐量、排队延迟和资源调度策略[^3]。 在离散事件仿真中,例如使用Arena软件进行通信系统建模时,可以通过设定事件的到达间隔服从泊松分布来模拟通信业务负载。这种建模方式能够有效反映网络在不同负载下的行为变化,帮助设计者优化资源分配、调整服务质量参数并预测系统瓶颈[^2]。 Simulink和DES(离散事件仿真)工具箱也支持基于泊松分布的通信业务建模。通过定义事件调度机制,可以构建排队系统、流量生成器和资源调度器等关键组件,从而实现对通信系统的动态仿真。这种方式不仅有助于理解系统在不同业务模型下的行为,还能为网络协议设计和性能优化提供理论依据[^4]。 此外,在低轨卫星通信链路分析中,基于随机几何的BPP(Binomial Point Process)模型被用于模拟卫星的空间分布和移动特征。该模型结合泊松过程的思想,能够分析星地通信链路中的干扰、损耗和覆盖率,为未来6G空天地一体化网络的设计提供参考[^5]。 以下是一个基于Python的示例代码,用于模拟基于泊松分布的通信业务到达过程,并绘制其分布直方图: ```python import numpy as np import matplotlib.pyplot as plt def simulate_poisson_traffic(lam, num_samples): return np.random.poisson(lam=lam, size=num_samples) # 参数设置 lambda_rate = 10 # 平均每秒10个请求 samples = 1000 # 生成数据 traffic_data = simulate_poisson_traffic(lambda_rate, samples) # 绘制直方图 plt.hist(traffic_data, bins=range(0, 25), density=True, alpha=0.7, edgecolor='black') plt.title('Poisson Distribution of Communication Traffic') plt.xlabel('Number of Requests per Second') plt.ylabel('Probability') plt.grid(True) plt.show() ``` 该代码模拟了通信系统中用户的请求到达情况,并通过可视化手段展示了其分布特性,有助于进一步分析系统性能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值