c++ 图片消融算法 求改进 300分

qq614190370 2012-11-22 04:53:06
消融算法需要实现的效果:就是每个像素的颜色溶解到周围的像素里
现在我的算法是这样,不过效率不高,原因可能是内存随机读取次数太多,考虑到cpu高速缓存的问题,在高频率处理大一点的图片的话,很不理想,
求改进,300分相送,谢谢

inline void CVisualWnd::FadeEffect(BYTE *pBits, Color cl, double Fading, int wt, int ht)
{
static int dr[5][2] = {{-1,0}, {0, 1}, {0, -1}, {1, 0}, {0, 0}};
int x=0, y=0;
int bitBytes, bitLine;
bitBytes = 32/8;
bitLine = wt*bitBytes;
int cla = cl.GetA();
int clr = cl.GetR();
int clg = cl.GetG();
int clb = cl.GetB();
double unFading = 1-Fading;
for(y=0; y!=ht; ++y)
{
for(x=0; x!=wt; ++x)
{
int r=0, g=0, b=0, a=0;
int index=0;
for(int i=0;i!=5;++i)
{
int newx=x+dr[i][0], newy=y+dr[i][1];
if(newy<0 || newy>ht-1 || newx<0 || newx>wt-1)
continue;
b += pBits[newy*bitLine + newx*bitBytes];
g += pBits[newy*bitLine + newx*bitBytes + 1];
r += pBits[newy*bitLine + newx*bitBytes + 2];
a += pBits[newy*bitLine + newx*bitBytes + 3];
++index;
}
pBits[y*bitLine + x*bitBytes] = b*Fading/index + clb*unFading ;
pBits[y*bitLine + x*bitBytes + 1]= g*Fading/index + clg*unFading ;
pBits[y*bitLine + x*bitBytes + 2]= r*Fading/index + clr*unFading ;
pBits[y*bitLine + x*bitBytes + 3]= a*Fading/index + cla*unFading ;
}
}
}

调用:FadeEffect((BYTE *)pBits, 0, 0.95, m_pImage->GetWidth(),m_pImage->GetHeight());
...全文
258 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
潇潇雨云 2012-12-12
  • 打赏
  • 举报
回复
建议楼主用标准的opencv函数,很强大!!
blowlow 2012-12-10
  • 打赏
  • 举报
回复
这个就是低通滤波啊,弄个滤波算子,调用标准的opencv滤波函数就可以啦。
看不见的裂痕 2012-12-07
  • 打赏
  • 举报
回复
这算法主要是N^3,让人有点受不了。 而且,先消融的点貌似会影响后消融的点。
3m2u 2012-12-07
  • 打赏
  • 举报
回复
你好像有好多计算 会被重复算. 比如 newy*bitLine + newx*bitBytes 就要算好多次
3m2u 2012-12-07
  • 打赏
  • 举报
回复
怎么不来点注释 循环里面是干嘛呢? 一堆乘法,还是符点数,应该快不了
qq614190370 2012-11-22
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390291142 http://bbs.csdn.net/topics/390291138
内容概要:本文档聚焦于基于Peng-Robinson状态方程的化工热力学计算研究,系统介绍了利用Matlab代码实现纯组及多组系统的压缩因子(z因子)和逸度系数的计算方法,并进一步拓展至泡点压力与露点压力的数值解。资源涵盖了从状态方程推导、非线性方程根、相平衡条件判断到迭代算法实现的完整技术路线,提供了可运行的Matlab程序代码,有助于深入理解实际工程中物性参数的计算原理与实现过程; 适合人群:具备化工热力学基础知识和一定Matlab编程能力的高校学生、科研人员及工程技术人员,尤其适合从事过程系统模拟、油气田开发、精馏设计及相关领域研究的专业人士; 使用场景及目标:① 掌握Peng-Robinson方程在真实气体物性计算中的应用;② 实现多组混合体系的相平衡计算与泡/露点预测;③ 为Aspen Plus等商用流程模拟软件提供底层算法验证与教学参考;④ 支持科研论文复现、课程设计、毕业设计及工业过程优化中的热力学数据支撑需; 阅读建议:建议读者结合经典化工热力学教材同步学习,重点理解立方型状态方程的根判别、迭代收敛策略与相平衡准则的数学表达,动手调试并运行所提供的Matlab代码以掌握算法细节,还可将其扩展应用于其他状态方程(如SRK、vdW)的对比析研究。

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧