征集图象抖动的算法(300分)

  • 主题发起人 主题发起人 LeeChange
  • 开始时间 开始时间
L

LeeChange

Unregistered / Unconfirmed
GUEST, unregistred user!
前两天看问题,有人提了像井,自己觉得就是抖动,于是灌了点水.
http://www.delphibbs.com/delphibbs/dispq.asp?lid=584653
不想却换来YB_unique的热心回答,借此题以答谢.更想引来更多的热心的大虾.
我将256色图变成二值图象效果还说的过去,但真彩到黑白就不行了.
事先声名,这里有100分已经是YB_unique的了.
 
TO LeeChange:
你也该抛砖引玉!先亮出你的兵器让大家看看!
你可以看看GX2 GRAPHICAL LIBRARY,它里面有最全的抖动算法源码!
其实很多图象处理控件里已经包含了抖动算法的源码!如:
TGIFImage提供了六种不同的抖动方式!
ImageLib更提供了对JPEG、PNG、GIF、PCX、BMP抖动效果的广泛支持!
真彩到黑白的解决方案——真彩到256色,256色到黑白!
呵呵,我就不灌水再贴了!
 
where's GX2 GRAPHICAL LIBRARY?
 
抖动:利用仅有的几种颜色,比如4、5色来模拟生成N多种颜色.
在计算机图形学以及数字图象处理里讲的比较多;在ImageLib里也有详细的描述.

关于抖动,其实就是色彩的变换,建议可以先看看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=530544
http://www.delphibbs.com/delphibbs/dispq.asp?lid=672480
 
TO LeeChange:
地址我忘记了,不过我这有一套,你要的话,请留下Email,我寄给你!
 
咳,抖动到二值图像没那么麻烦。做法很简单:
计算每个像素的灰度,然后根据该灰度值产生一个随机数,确定画黑点或白点的概率。
灰度计算公式:
Gray := (R*30 + G*59 + B*11) Div 256;
然后计算概率:
P := Random(Gray+1);
确定画点:
If P=0 Then Canvas.Pixels[X, Y] := clBlack Else Canvas.Pixels[X, Y] := clWhite;
OK,简单吧?每个像素折腾一次,虽然有点慢。[:D]
 
用p=Random(Gray+1)可以计算概率?
准确的比例关系是0.299*R+0.587*G+0.114*B
用密度函数确定域值对图象做二值化一般是用来做图象分割的,对物体识别有好处,而抖动
是要显示出来给人看的。Scarlette的做法会丢失许多细节
 
二值化,呵呵!好东西!
前段日子刚好在网上看到一个人体手掌骨骼分析器,用Delphi开发的!
就是用灰度化和二值化等等处理得到的!
 
嘻嘻!可惜不是我写的!
要看你自己去——http://www.notionsoft.com/prod/bonage/suanfa.html
 
可否借来观赏观赏?
 
呵呵,大家在集会呀。
工作上以前没接触过,不过以后应该有机会的时候,可要向你们多多请教。
 
这里有更详细的讨论
http://www.delphibbs.com/delphibbs/dispq.asp?lid=715571
 
多人接受答案了。
 

Similar threads

回复
0
查看
874
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部