锐化与柔化是怎样opencv实现usm锐化的

社会化媒体
了解更多>>
桂ICP备 号
桂公网安备 36号
阅读下一篇
自媒体运营攻略
行业经验交流
Hi,在你登录以后,就可以永久免费的收藏任何您感兴趣的内容,关注感兴趣的作者!
请输入正确的邮箱
已有帐号请点击
帐号创建成功!
我们刚刚给你发送了一封验证邮件
请在48小时内查收邮件,并按照提示验证邮箱
感谢你对微口网的信任与支持
如果你没有收到邮件,请留意垃圾箱 或 重新发送
你输入的邮箱还未注册
还没有帐号请点击
你输入的邮箱还未注册
又想起来了?
邮件发送成功!
我们刚刚给你发送了一封邮件
请在5分钟内查收邮件,并按照提示重置密码
感谢你对微口网的信任与支持
如果你没有收到邮件,请留意垃圾箱 或 重新发送
对不起,你的帐号尚未验证
如果你没有收到邮件,请留意垃圾箱 或
意见与建议
请留下您的联系方式
* 留下您正确的联系方式,以便工作人员尽快与你取得联系
新!变现功能上线
现在,只要登录微口网账号,点击“我要变现”,就能领取任务,轻松推广商品,坐收丰厚佣金,只要一分钟操作,就能获取50%超高提成!
合适的商品更容易推广,你可以根据公众号定位,选择调性最适合推广的商品;如果没有公众号,你也可以选择自己喜爱或者符合自己品味的商品。
优秀的产品文案能让我们赚更多钱,你可以直接使用我们平台提供的文案素材;如果你不想用,那么你可以自己随心撰写合适的产品文案。
关于购买链接
你可以将购买链接粘贴在“阅读原文”处;或者分享购买链接/二维码至社交平台或社交群内。只要有用户通过此链接购买了商品即可获得丰厚提成!
转藏至我的藏点我有一个图像的平滑算法(柔化、锐化等)的例子,谁能帮优化一下?
Description of your first forum.
11 篇帖子 & 分页:1 / 1
由 3cs & 星期六, 日 13:06
例子如下:我用它作800*600的BMP图片的处理,速度太慢了 &&80毫秒!现在的要求是&15毫秒!谁能帮我,测试的机器(CPU1。2G,内存256) 只要能帮我优化到现在4-5倍的处理速度,200分马上奉上!procedure bmpSmooth(mybitmap: smoothlevel: x1,y1,x2,y2: integer);var& p,p1,p2:& i,j:& thew,theh:& s1,s2,s3:& rvalue:& gvalue:& bvalue:& tmpbitmap:& maxnum,minnum:begin& tmpbitmap:=tbitmap.& tmpbitmap.assign(mybitmap);& with mybitmap do& begin& & thew:=& & theh:=& & if (x1=x2) or (y1=y2) then& & begin& & & x1:=2;& & & y1:=2;& & & x2:=thew-2;& & & y2:=theh-2;& & end& & else& & begin& & & minnum:=min(y1,y2);& & & maxnum:=max(y1,y2);& & & y1:=& & & y2:=& & & minnum:=min(x1,x2);& & & maxnum:=max(x1,x2);& & & x1:=& & & x2:=& && & if x1&2 then x1:=2;& & if y1&2 then y1:=2;& & if x2&thew-2 then x2:=thew-2;& & if y2&theh-2 then y2:=theh-2;& & for i:=y1 to y2 do& & begin& & & p:=ScanLine[i];& & & p1:=tmpbitmap.scanline[i-1];& & & p2:=tmpbitmap.scanline[i+1];& & & for j:=x1 to x2 do& & & begin& & & & s1:=j*3;& & & & s2:=j*3+1;& & & & s3:=j*3+2;& & & & case smoothlevel of& & & & & 1: begin &// 轻微& & & & & & & &rvalue:=(p[s3]*3+p[s3-3]+p[s3+3]+p1[s3]+p1[s3-3]+p1[s3+3]+& & & & & & & & & & & & p2[s3]+p2[s3-3]+p2[s3+3]) div 11;& & & & & & & &gvalue:=(p[s2]*3+p[s2-3]+p[s2+3]+p1[s2]+p1[s2-3]+p1[s2+3]+& & & & & & & & & & & & p2[s2]+p2[s2-3]+p2[s2+3]) div 11;& & & & & & & &bvalue:=(p[s1]*3+p[s1-3]+p[s1+3]+p1[s1]+p1[s1-3]+p1[s1+3]+& & & & & & & & & & & & p2[s1]+p2[s1-3]+p2[s1+3]) div 11;& & & & & & && & & & & 2: begin &// 普通& & & & & & & &rvalue:=(p[s3]*2+p[s3-3]+p[s3+3]+p1[s3]+p1[s3-3]+p1[s3+3]+& & & & & & & & & & & & p2[s3]+p2[s3-3]+p2[s3+3]) div 10;& & & & & & & &gvalue:=(p[s2]*2+p[s2-3]+p[s2+3]+p1[s2]+p1[s2-3]+p1[s2+3]+& & & & & & & & & & & & p2[s2]+p2[s2-3]+p2[s2+3]) div 10;& & & & & & & &bvalue:=(p[s1]*2+p[s1-3]+p[s1+3]+p1[s1]+p1[s1-3]+p1[s1+3]+& & & & & & & & & & & & p2[s1]+p2[s1-3]+p2[s1+3]) div 10;& & & & & & && & & & & 3: begin &// 加强& & & & & & & &rvalue:=(p[s3]+p[s3-3]+p[s3+3]+p1[s3]+p1[s3-3]+p1[s3+3]+& & & & & & & & & & & & p2[s3]+p2[s3-3]+p2[s3+3]) div 9;& & & & & & & &gvalue:=(p[s2]+p[s2-3]+p[s2+3]+p1[s2]+p1[s2-3]+p1[s2+3]+& & & & & & & & & & & & p2[s2]+p2[s2-3]+p2[s2+3]) div 9;& & & & & & & &bvalue:=(p[s1]+p[s1-3]+p[s1+3]+p1[s1]+p1[s1-3]+p1[s1+3]+& & & & & & & & & & & & p2[s1]+p2[s1-3]+p2[s1+3]) div 9;& & & & & & && & & & & else& & & & & & begin& & & & & & & rvalue:=p[s3];& & & & & & & gvalue:=p[s2];& & & & & & & bvalue:=p[s1];& & & & & && & & && & & & p[s3]:=& & & & p[s2]:=& & & & p[s1]:=& & && &&& tmpbitmap.
由 LSUPER & 星期日, 日 01:35
你的代码可以优化的地方不多了1、获取 ScanLine[I] 每次都调用 GetScanLine,不爽,建议一次获取两个 ScanLine 之间的差异以后偏移即可(对 tmpbitmap 和 mybitmap)。2、因为存在多处 s2、s3 的 +1 之类的运算,建议代码中 s2 repalce 为 s1 + 1;s3 replace 为 s1 + 2。3、bitmap 本质就是一块连续的内存区域(windows 的 bitmap 结构),既然需要模化的区域不一定是整块的,assign 整个缓存数据开辟的区域比较浪费,建议自己按需拷贝指定区域内容。(windows 中内存拷贝比较耗时)
由 3cs & 星期日, 日 12:58
to:LSUPER你的建议,我都试了,但效果不明显.,和我要求的速度相差还很远!有没有别的方法呀?
由 3cs & 星期日, 日 16:48
to:LSUPER能不能给一个线性插值算法例子给我!
由 xxxlxr & 星期日, 日 22:01
一楼回答是正解。关于优化:1,减少循环里的操作,可以提出去的尽量提出去,2,少用昂贵的乘除法,能用加减代替的就用加减,3,针对你这种情况,考虑差值,中心思想就是这一次一计算尽量用前几次的计算代替来减少计算量,自己递推下就知道了,呵呵。。
由 3cs & 星期六, 日 16:07
我优化了,但还是达不到要求,这不是人力所能为呀[:D]GDI+看来也不过如此![:(]用别的方法我解决了这个问题,但对GDI是真的失望了[:(]分还在,来的朋友全有分,最好帮顶下![:D]
& 星期六, 日 20:21
不太懂图像算法,case smoothlevel of 移到循环外不行吗?大概看了一下,两层循环应该是行了列的循环,改成一次处理一行行否。
由 cobook & 星期日, 日 13:53
把位图的PixelFormat属性设置为pf24bit试试。
由 小雨哥 & 星期一, 日 00:30
说句实话,这个尺寸获得这个时间,你的CPU已经很强了。因为柔化等操作是与图片大小有密切关系的,基本上最后的像素计算量是原图片的3到4倍(代码中的 scanline[i-1]scanline[i+1])。深入优化的话,可以考虑建表,因为 rgbval 做的是四点平均,可以预先建表,直接由四点像素值命中表中数据,三种平滑样例就要建三张表。不需要考虑SSE或者MMX优化,除非有现成的代码(如 intel fast code),否则很难保证每台机器上都能获得好的效果。
由 3cs & 星期一, 日 15:24
to 小雨哥& 你的贴&&忘掉代码 之 TGraphic&&让我看到了GDI与DirectDraw的一个完美结合,通过组件TDirectCanvas的建立,也能看出你对TSurface.Canvas的深入理解. 问题;我现在想知道是建立一个副Surface装载DIB图片流映射到主Surface速度快,还是建立内存流装载DIB图片流映射到主Surface的速度快呢?我自己的感觉是后者要快的多,那为什么在DirectDraw中要引入Surface这个概念呢?能不能把你的理解说一下?谢谢!
由 3cs & 星期一, 日 15:32
对DirectDraw中的Surface有自己见解的都可以发表看法!来者都有分拿!
11 篇帖子 & 分页:1 / 1| Copyright &
. All Rights Reserved .

参考资料

 

随机推荐