扬大电科多媒体课程设计

上传人:枫** 文档编号:497769549 上传时间:2022-09-30 格式:DOC 页数:19 大小:232.51KB
返回 下载 相关 举报
扬大电科多媒体课程设计_第1页
第1页 / 共19页
扬大电科多媒体课程设计_第2页
第2页 / 共19页
扬大电科多媒体课程设计_第3页
第3页 / 共19页
扬大电科多媒体课程设计_第4页
第4页 / 共19页
扬大电科多媒体课程设计_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《扬大电科多媒体课程设计》由会员分享,可在线阅读,更多相关《扬大电科多媒体课程设计(19页珍藏版)》请在金锄头文库上搜索。

1、 多媒体信息处理 课 程 设 计 班级 :电科1002 姓名 :张贤慈 学号 :100703224 日期 :2013年5月19日一. 完成情况(8位或24位bmp图).个人信息(姓名,学号)、.反色变换.调节图像亮度(加大,减小亮度).调节图像对比度(加大,减小对比度).提取彩色图像的RGB分量(红,绿,蓝).镜像操作(左右,上下).校正(显示对话框).图像逆时针旋转90(仅限正方形图).图像还原功能二 程序清单及部分注释:自加宏定义等: #include math.h /自加头文件 #define Hui(x,y) *(m_pDIBData+(x)*GetBmpRealWidth()+y)

2、/指向灰度图色彩矩阵 int Y150015003; /定义数组 int A150015003; float value;按键响应:(举一例)void CPicture224View:OnFanse() /反色变换的按键程序/ TODO: Add your command handler code here if(m_dib.m_pBMI=NULL|m_dib.m_pDIBData=NULL)AfxMessageBox(没有图像资源); return; if(m_dib.FANSE() Invalidate(TRUE); /按键有效则转至反色变换处理程序1. 个人信息; 使用AfxMessag

3、eBox()函数:void CPicture224View:Onmymessage() /个人信息的按键程序/ TODO: Add your command handler code hereAfxMessageBox(电科10n100703224n张贤慈);/弹出该信息窗口return;2.反色: BOOL DIB:FanSe()/反色变换处理程序 int i,j,R,G,B;/定义变量if(bih.biBitCount=24)/判断是不是24位彩图for(i=0;iGetDIBHeight();i+)for(j=0;jGetDIBWidth();j+) R=int(255-Cnumber(

4、i,j,2);/将各个颜色分量取反赋值 G=int(255-Cnumber(i,j,1); B=int(255-Cnumber(i,j,0); Cnumber(i,j,2)=(BYTE)R;/把所求反色量存回个点 Cnumber(i,j,1)=(BYTE)G; Cnumber(i,j,0)=(BYTE)B;else if(bih.biBitCount=8)/判断是不是8位图for(i=0;iGetDIBHeight();i+)for(j=0;jGetDIBWidth();j+) R=int(255-Hui(i,j);/取数据并进行反色 Hui(i,j)=(BYTE)R;/把反色量赋回该点els

5、e AfxMessageBox(原图既不是24位真彩图也不是8位灰度图); /弹出此窗 return false;return true;/返回true 3. 调节图像亮度: .加大图像亮度 BOOL DIB:zengdaliangdu()/增加亮度处理程序 int i,j,k;double t=0; if(bih.biBitCount=24)/判断24位真彩图 for(i=0;iGetDIBHeight();i+) for(j=0;jGetDIBWidth();j+) for(k=0;k3;k+) t=1.1*Cnumber(i,j,k);/颜色分量增加10% if(t255) Cnumbe

6、r(i,j,k)=(unsigned char)t; /若增加后的值小于255,则赋回给颜色分量 else Cnumber(i,j,k)=255;/若大于255,则全赋为255 else/如果8位灰度图 for(i=0;iGetDIBHeight();i+) for(j=0;jGetDIBWidth();j+) t=1.1*Hui(i,j);/颜色分量增加10% if(t255) Hui(i,j)=(unsigned char)t;/若增加后的值小于255,则赋回给灰度分量 else Hui(i,j)=255;/若大于255,则全赋为255 return true; .减小图像亮度: BOOL

7、 DIB:jianxiao() int i,j,k;double t=0; if(bih.biBitCount=24)/判断24位真彩图 for(i=0;iGetDIBHeight();i+) for(j=0;jGetDIBWidth();j+) for(k=0;k3;k+) t=0.9*Cnumber(i,j,k);/颜色分量减小10% Cnumber(i,j,k)=(unsigned char)t; /将改变后的值赋回颜色分量 else/如果8位灰度图 for(i=0;iGetDIBHeight();i+) for(j=0;jGetDIBWidth();j+) t=0.9*Hdu(i,j)

8、;/颜色分量减小10% Hdu(i,j)=(unsigned char)t;/将改变后的值赋回灰度分量 return true; 4. 调节图像对比度: .增大对比度: BOOL DIB:zengda()/增加对比度处理程序 int i,j,Y,Cb,Cr,R,G,B,t; /定义Y,t分别为亮度和平均亮度long int X=0;if(bih.biBitCount=8)/灰度图for(i=0;iGetDIBHeight();i+)for(j=0;jGetDIBWidth();j+)Y=int(Hui(i,j);/亮度值X=X+Y;/求图像的总亮度 t=int(X/(i*j);/图像平均亮度f

9、or(i=0;iGetDIBHeight();i+)for(j=0;jt)Y=Y+10;/若大于平均亮度,则亮度增加;否则亮度减小 else Y=Y-10; if(Y255)Y=255; Hui(i,j)=(BYTE)Y;/保存改变后的亮度else if(bih.biBitCount=24)/彩色图for(i=0;iGetDIBHeight();i+)for(j=0;jGetDIBWidth();j+)Y=int(0.2999f*Cnumber(i,j,2)+0.587f*Cnumber(i,j,1)+0.114f*Cnumber(i,j,0);/亮度计算公式X=X+Y;/计算总量度 t=in

10、t(X/(i*j);/计算24位图像亮度平均值也是比较阀值 for(i=0;iGetDIBHeight();i+)for(j=0;jt)Y=Y+10;else Y=Y-10;/是否大于阀值,若大于,则亮度增加;否则亮度减小if(Y255) Y=255;/判断Y值是否超出范围R=int(Y+1.403f*Cr);G=int(Y-0.344f*Cb-0.714f*Cr);B=int(Y+1.773*Cb);/再变回RGB空间if(R255) R=255;if(G255) G=255;if(B255) B=255;/判断R,G,B是否超出范围并进行取舍 Cnumber(i,j,2)=(BYTE)R; Cnumber(i,j,1)=(BYTE)G; Cnumber(i,j,0)=(BYTE)B;/保存改变后的RGBelseAfxMessageBox(原图既不是24位真彩图也不是8位灰度图); return false;return true; .减小对比度:(与增加对

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号