Eastmount 制作 第四课 bmp 图片双显和灰度 <一>.Bmp图片双显和灰度原理 为了方便后续的量化采样处理,这里首先要实现bmp图片双显的功能,即在menu的左边显示原图,把原图的文件头数据和信息头数据保存在全局变量数组中;同时建立一个临时的”picture.bmp”图片(默认保存路径在打开原图的位置),以后的操作对临时的图片进行处理。 如图:左边为原图(彩图),右边为双显,同时在右边的临时图片进行处理。此图的处理是灰度(右边是灰度后的图片)。 Eastmount 制作 (百度文库:BMP 彩图转灰度图) 1.什么叫灰度图?任何颜色都有红、绿、蓝三原色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度: 浮点算法:Gray=R*0.3+G*0.59+B*0.11 整数方法:Gray=(R*30+G*59+B*11)/100 移位方法:Gray =(R*28+G*151+B*77)>>8; 平均值法:Gray=(R+G+B)/3;(此程序采用算法) 仅取绿色:Gray=G; 通过上述任一种方法求得 Gray 后,将原来的 RGB(R,G,B)中的 R,G,B 统一用Gray 替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的 RGB(R,G,B)就是灰度图了。 2.改变象素矩阵的 RGB 值,来达到彩色图转变为灰度图 加权平均值算法:根据光的亮度特性,其实正确的灰度公式应当是 R=G=B=R*0.299+G*0.587+B0.144 为 了 提 高 速 度我 们 做 一 个 完 全 可 以 接 受 的 近 似 , 公 式 变 形 如 下 :R=G=B=(R*3+G*6+B)/10 3.真正的 24 位真彩图与 8 位的灰度图的区别就在于,真彩图文件中没有调色板,灰度图有调色板,真彩图中的象素矩阵是 RGB 值,灰度图中的象素矩阵是调色板索引值。源代码只简单的改变象素矩阵的 RGB 值,来达到彩色图转为灰度图,并没有添加调色板;该程序未实现添加了调色板。 Eastmount 制作 <二>.MFC 实现双显和灰度 第一步:建立标记位 1.在 View .cpp 文件中显示函数前建立标记位,即: void CBmpDraw View ::Show Bitmap(CDC *pDC,CString BmpName)前添加: /*****************************************************/ /* numPicture=0 时显示提示错误信息 */ /* numPicture=1 时显示 1 张图片在 OnFileOpen 中定义 */ /* numPicture=2 时显示 2 张图片和处理在处理函数中定义 */ /*****************************************************/ /***************************************...