matlab 16位灰度值转8位,在matlab中如何将灰度值为24位的转化为8?
我使用的是Visual c++6。0技术内幕里提供的类CDib来操作位图,最好提供可以两个独立的函数来分辨别实现着俩个功能。他们可以作为CDib类的成员函数来使用。类似下面的这个就可以,我用了下面的这个,但是下面这个不好用,处理后的图象有许多问题,不能实现灰度化。
/*
此函数实现由24位的bmp到256色灰度图的转换
*/
CDib& CDib::RgbToGray()
{
//判断dibFile是有效的24位真彩色位图
if(m_lpBMIH->biBitCount==24 && m_nColorTableEntries==0 && m_lpBMIH->biCompression==BI_RGB)//是真彩色位图
{//先只处理扩展的Windows DIB
if((m_lpBMIH)->biSize==40){
m_nColorTableEntries=256;//修改数据成员
m_lpBMIH->biBitCount=8;
DWORD RowLength=4*(((m_lpBMIH->biWidth)*(m_lpBMIH->biBitCount)+31)/32);
m_dwSizeImage=RowLength*(m_lpBMIH->biHeight);
//分配一段保存256灰度位图的颜色表和实际位图的空间
DWORD NewBufSize=(DWORD)(256*sizeof(RGBQUAD)+RowLength*(m_lpBMIH->biHeight));
HGLOBAL hNewPalette=::GlobalAlloc(GHND,NewBufSize);
LPVOID lpvNewColorTable=::GlobalLock(hNewPalette);
LPBYTE lpNewImage=(LPBYTE)lpvNewColorTable+256*sizeof(RGBQUAD);
LPRGBQUAD lpvColorTable=(LPRGBQUAD)lpvNewColorTable;
//构造一个颜色表
for(int i=0;ibiHeight;j++)
{
for (long k=0;kbiWidth;k++)
{
//从位图数据计算得到Y值,写入新图中
Blue=(unsigned char)(*lpOldImage++);
Green=(unsigned char)(*lpOldImage++);
Red=(unsigned char)(*lpOldImage++);
Y=(float)(Red*0。
299+Green*0。587+Blue*0。
114);
Gray=(BYTE)Y;
*(lpNewImage++)=Gray;
}
}
memcpy(m_lpImage,lpvNewColorTable,NewBufSize);
m_lpvColorTable=m_lpImage;
m_lpImage=(LPBYTE)m_lpvColorTable+256*sizeof(RGBQUAD);
::GlobalUnlock(hNewPalette);
::GlobalFree(hNewPalette);
}
else
{
AfxMessageBox("不是扩展的windows位图");
}
}
else
{
AfxMessageBox("不是有效的真彩色位图!");
}
MakePalette();
return *this;
}。
全部
matlab 16位灰度值转8位,在matlab中如何将灰度值为24位的转化为8?相关推荐
- pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换、即一次性同时对多个值进行替换操作
pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换.即一次性同时对多个值进行替换操作 目录
- Python语言学习:在python中,如何获取变量的本身字符串名字而非其值/内容及其应用(在代码中如何查找同值的所有变量名)
Python语言学习:在python中,如何获取变量的本身字符串名字而非其值/内容及其应用(在代码中如何查找同值的所有变量名) 目录
- ajax拿table里的th值,Jquery Ajax 异步设置Table中某列的值
可根据table中某列中的ID去改变某列的值! 只是参考,实际应用中不能这样做的,如果有很多行,频繁访问服务器,服务器是顶不住的! JS: $(document).ready(function () ...
- mysql+默认值+default_十六、MySQL 中数据类型的默认值 - default 约束-搜云库
MySQL 中,所有的数据类型,都可以显式或隐式的拥有默认值. 我们可以使用 DEFAULT 约束显式的为列指定一个默认值.比如 CREATE TABLE t1 ( i INT DEFAULT -1, ...
- python找出值为nan_Python Numpy:找到list中的np.nan值方法
这个问题源于在训练机器学习的一个模型时,使用训练数据时提示prepare的数据中存在np.nan 报错信息如下: ValueError: np.nan is an invalid document, ...
- scala中map添加值_如何在Scala Map中反转键和值
scala中map添加值 A Map is a data structure that stores data as key: value pair. 映射是一种将数据存储为键:值对的数据结构. Sy ...
- php 判断数组某个值,浅谈PHP检查数组中是否存在某个值 in_array 函数
PHP in_array() 函数检查数组中是否存在某个值,如果存在则返回 TRUE ,否则返回 FALSE . 语法: bool in_array( mixed needle, array arra ...
- MATLAB红色分量图如何合成,如何修改一张图片中红色分量的值?
感谢您的回复,我也觉得将r的值写回i保存是非常正确的 但在运行了matlab后似乎仍有写问题,这里我贴出我的代码和运行结果 i=imread('88.jpg'); %读入 ...
- php将数组值用 分开,PHP将数组中的多个值替换为另一个数组
我想将第一个数组中的值插入第二个数组中,其中键的名称是[cost]: $newCossArray ( [0] => 52.68 [1] => 7414.68 [2] => 2471. ...
- 关于灰度共生矩阵的一点知识(MATLAB)
目录 一.基本理论 1.背景 2.概念 3.含义 4.例证 5.规律 二.特征量 1.对比度(contrast) 2.角二阶矩(Angular Second Moment, ASM) 3.熵(entr ...
最新文章
- R语言nrow函数获取dataframe或者matrix行计数统计
- 文远知行核武器曝光:无人车量产都靠它
- 区块链100问1-20问
- SMGP3.0协议的概念知识
- js统计html页面访问的次数6,JS综合篇--[总结]Web前端常用代码片段整理
- DTC跨境电商白皮书
- 千里眼摄像头支持对象存储吗_3.5ms超高速写入、支持125℃工作的EEPROM“BR24H-5AC系列”...
- php面试中的经典问题
- jq post 表单提交文件_Power Query 中使用POST方法进行网络抓取的尝试
- 对比Windows 8模拟器(Simulator)和Windows Phone仿真器(Emulator)
- Java Web GenericServlet
- DJ设备市场现状及未来发展趋势
- pymysql长时间连接自动断开解决方案
- 服务器尚未完成维护梦幻西游,梦幻西游维护公告
- Pandas 报错:index must be monotonic increasing or decreasing
- Python 之CV2详解
- ruby中的符号_Ruby中的凡人和不朽符号
- 【信息收集】第六章 社会工程学
- [C语言编程练习][14]编写一个程序,使用嵌套循环,按下面格式打印字母。A
- 算法设计与分析5.11求解满足方程解问题
热门文章
- C/C++实现删除字符串的首尾空格
- TP引用样式表和js文件及验证码
- linux延时与定时操作
- gprof, Valgrind and gperftools - an evaluation of some tools for application level CPU profiling on
- php Pthread 多线程 (二) Worker和Threaded
- 解决SQL命令行回退的问题
- wxPython python3.x下载地址
- PL/SQL块中不能直接执行DDL语句(错误)
- 460. LFU 缓存
- 400. 第 N 位数字