社区
C语言
帖子详情
算法:8位(256色)的图像 如何 转换成 24位
chenbin200818
2010-09-10 05:46:21
纯c实现, 如何实现 8位(256色)的bmp 转换成 24位的
只需要 转换 公式
我自己转换 后发现 图像 失真比较厉害 以下是我的转换公式
unsigned char B, G, R;
原始 像素 为 char color;
B = color >>5;
G = (color<<3)>>6;
R = (color<<5)>>5;
...全文
367
8
打赏
收藏
算法:8位(256色)的图像 如何 转换成 24位
纯c实现, 如何实现 8位(256色)的bmp 转换成 24位的 只需要 转换 公式 我自己转换 后发现 图像 失真比较厉害 以下是我的转换公式 unsigned char B, G, R; 原始 像素 为 char color; B = color >>5; G = (color<>6; R = (color<>5;
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zmshy2128
2010-09-12
打赏
举报
回复
bmp文件格式:
文件头 + 图像头 +
调色板
+ 颜色数据值
chenbin200818
2010-09-12
打赏
举报
回复
看来 是我没搞清楚问题
那该如何 建立 个256个颜色的映射表呢 我很不清楚
麻烦 告诉我 一下
我不是vc程序员,是做c嵌入式的, 对这个真的不清楚
用户 昵称
2010-09-11
打赏
举报
回复
查出来调色板然后就是24位了。
mLee79
2010-09-11
打赏
举报
回复
8位色一般都有调色板...
zmshy2128
2010-09-11
打赏
举报
回复
[Quote=引用楼主 chenbin200818 的回复:]
是我的转换公式
unsigned char B, G, R;
原始 像素 为 char color;
B = color >>5;
G = (color<<3)>>6;
R = (color<<5)>>5;
[/Quote]
你这公式从那来的??????????????????
8位(256色)的bmp 转换成 24位。
是8位的灰度图像吗?如果是的话,那么 B = G = R = color; 即可。
如果不是,查找颜色表
zenny_chen
2010-09-10
打赏
举报
回复
[Quote=引用楼主 chenbin200818 的回复:]
纯c实现, 如何实现 8位(256色)的bmp 转换成 24位的
只需要 转换 公式
我自己转换 后发现 图像 失真比较厉害 以下是我的转换公式
unsigned char B, G, R;
原始 像素 为 char color;
B = color >>5;
G = (color<<3)>>6;
R = (color<<5)>>5;
[/Quote]
楼主在处理的时候不能用char,应该用unsigned int
因为像第二个,你左移3位后,后面再右移,由于char是带符号的,因此这里将用算术右移,把符号都移进来了,呵呵。
像素的值如果被表达为整型的话,应该用无符号表示。一个分量若是8位的话就是0到255。
zhuyi108
2010-09-10
打赏
举报
回复
数字格式换下试试@
Trinx
2010-09-10
打赏
举报
回复
没搞过,先顶贴了。
16
位
图像
转换为
8
位
图像
(c++,python)
如之前所说,我们需要将16
位
图像
转换为
8
位
图像
;16
位
图像
的像素值一共有:2^16=65536种颜
色
;而
8
位
位
图像
只有:2^8=
256
种颜
色
,传统的
位
数转换都是:像素值*
256
/65536,比如photoshop,以及matlab的im2uint8函数都是如此,在一般场景下是没有问题的,我们姑且称之为“真转换”,而如果是labelme得到的label.png标注
图像
在进行转换时,由于每个类别的像素...............
数字
图像
处理之
24
位
真彩
色
转
256
色
调
色
边图
真彩图即RGB图0 0转
256
色
调
色
板图据我查得,常用的
算法
有 1)流行
色
算法
: 对
图像
中所有像素点的RGB值进行统计,找出出现次数最多的
256
种颜
色
作为调
色
板的颜
色
。然后将原图中的各个像素点与调
色
板图的颜
色
进行匹配,找出差异最小的颜
色
作为该像素点的颜
色
。
算法
特点,
算法
简单,容易实现,但出现失真的情况可能比较“严重”。 2)中
位
切分
算法
:
算法
的基本思路
32
位
彩
色
图像
转换成
256
级灰度图的
算法
void GrayConversionXu(HDIB& hDib) { HDIB hGreyDIB=NULL; DWORD nWide,nHeight,i,j; LPBYTE lpBit=(LPBYTE)GlobalLock(hDib); LPBITMAPINFOHEADER pHeader=(LPBITMAPINFOHEADER
24
位
真彩
色
图像
转换为16
位
高彩
色
图像
的实现方法及效果改进
本篇博文来自博主Imageshop,打赏或想要查阅更多内容可以移步至Imageshop。 转载自:https://www.cnblogs.com/Imageshop/p/3453569.html 侵删 一、前言 高彩
色
位
图像
即我们常说16
位
图像
,每个像素占用两个字节,相比于
24
位
真彩
色
来说,在保持一定的
图像
质量的前提下可以节省1 /3的内存空间,在游戏编程中以及一些移动设备上常使用这种格式,一般PC机上似乎很少涉及,因此这方面的资料也不是特别多。 真彩
色
转换...
将
24
位
真彩
色
位
图保存为
256
色
(
8
位
)
位
图
24
位
真彩
色
位
图如果想保存
位
256
色
,即
8
位
位
图,关键是构造合适的调
色
板,同时考虑程序的运行效率。如果采用Windows自带的调
色
版来创建,则最后生成的图片失真太大,甚至惨不忍睹。下面采用一个更加优化的方式,使得生成的
256
色
位
图基本和
24
位
的原图一致,函数代码如下:void Save
256
Bmp(void){ // TODO: 在此添加实现代码 //::Messa
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章