解决方案 »
- 请教:关于CAsyncScoket
- VC下怎么实现与其他CAD系统(COREDRAW,AUTOCAD)的文件接口?
- 求 : 闽南语教程 下载
- 如何在DOC类中获得CChildFrame类以及CMainFrame类的指针?
- USHORT C = '陈'; USHORT D = L'陈'; C 和 D有什么不同,怎么样由D到C转换?
- 怎样在浏览器外启动ActiveX得应用程序
- 我为自己的按钮写了窗口函数,但是消息没有传进去,为什么?(SDK编程,子类化的问题)
- 急!在vc中如何存取Orcal数据库中的BLOB数据类型?
- 付酬找你编程序
- 我的Exception类为什么CATCH不到?
- 关于线程的问题,为什么线程里用到的基本对话框类的公共成员变量不行
- 关于利用picture控件加载图片的问题
if ((*igreen)!=0){
lpdest[n] =(unsigned char)((*ired)/(*igreen));
如果像素的绿色分量g不是0,lpdest[n]就变成r/g;可见lpdest[n]是一个表示像素特征的数组。// lpdest[n] = (unsigned char)(0.299*(*ired)+0.587*(*igreen)+0.114*(*iblack));
这句不知为什么注释掉了,lpdest看来又是存储像素灰度值的数组;如果说r/g存储为灰度值数组中,那么这个除法又有什么意义呢?
if((lpdest[n])<=10&&((*ired)+(*igreen)>=400))
{
*ired=255;///////////////////这里都是做什么的?
*igreen=0;
*iblack=0;
}
else
{
*ired=0;
*igreen=0;
*iblack=0;
}这里的所谓伪色彩处理:像素“特征值”lpdest[n]满足(r/g<10 且R+G>400)时,就变成红色(255,0,0);否则成黑色(0,0,0)后面这些操作都是在像素绿色分量存在的情况(!=0)来进行的,总结:
如果(像素绿色分量!=0):
1)把r/g存储为该像素的特征值;
2)如果(这个特征值比较小,且像素的R、G分量都较大)(r/g<10 且R+G>400)把像素变成红色;否则变成黑色。猜测:r/g<10这个条件可以表明,RG差别不超过10倍;另外一个条件:R+G>400表明RG二者都很高;没有图不知道效果;
实在不明白就把满足)条件(r/g<10 且R+G>400)和不满足的所有颜色在颜色板中画出来看看;直观分析究竟是什么效果的伪色彩。