terrificskyfox
驱动小牛
驱动小牛
  • 注册日期2003-03-12
  • 最后登录2014-04-28
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
阅读:3429回复:12

[提问]:哪位大侠介绍一下用半色调技术将灰度图转化为黑白二值图的半色调算法

楼主#
更多 发布于:2003-08-11 09:46
本人正在做一个98下的打印驱动程序,需要利用半色调技术将灰度图
转化为黑白二值图,哪位大侠做过这方面的工作,请详细介绍一下算法,
或者那里可以找到这个算法

非常着急,谢了先
hcheng_qi
驱动老牛
驱动老牛
  • 注册日期2002-11-07
  • 最后登录2006-04-13
  • 粉丝1
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-11 18:43
去找一些计算机图形学的书看看吧。你最好还是使用系统的halftone来完成转换,自己作的花实在太难了,而且估计效果也不怎么样
| -''/"',___,,--''"`-,_¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ `6_ 6¡¡)¡¡ `-,¡¡(¡¡¡¡),`-.__.`)¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ /_Y_./',, _¡¡)¡¡`._¡¡`,``-..-'¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡_.'.`='¡¡ _ / / --'_.','¡¡¡¡¡¡¡¡¡¡¡¡ (il)'¡¡¡¡¡¡(li)''¡¡ ((!-'¡¡¡¡ÃÃÃÃ! ±ðÅÜ£¿!
y5318
驱动中牛
驱动中牛
  • 注册日期2001-09-18
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分14分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-08-12 18:34
其实装化为黑白二值图最好做:你用threshold对图象数句进性比叫,threshold 可以为0-255之间的任意书, 只要你愿意, 然后将数据的三个channel去同样的只, 最后保存处理的数据成畏途即可
wolflee
驱动牛犊
驱动牛犊
  • 注册日期2002-01-04
  • 最后登录2012-06-21
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-12 19:23
halftone技术不是普通的转黑白,而是要用黑白来模拟灰度的变化,是很难的一种技术,有许多做打印机的公司都有自己的专利,
hanlftone技术本身包括算法和pattern.这些算法和pattern和要打印的幅面大小,分辨率,和打印机的物理特性相关.就连pattern都有很多专利,所以要自己设计这些算法和pattern是很难的,而且网上都很少有这种资料,所以建议让系统来完成halftone比较好.

做好halftone需要经过很多次调整才能达到最好的效果,许多比较专业的公司都用了错误扩散和噪音等等技术...

上面是我了解的一些情况...
Driver Developer www.soforge.com
spin
驱动小牛
驱动小牛
  • 注册日期2001-04-17
  • 最后登录2015-10-27
  • 粉丝1
  • 关注0
  • 积分46分
  • 威望354点
  • 贡献值0点
  • 好评度41点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-13 14:59
就是抖动算法,网上找一个就是了,请问你在做全代码方式的
打印驱动吗?
hcheng_qi
驱动老牛
驱动老牛
  • 注册日期2002-11-07
  • 最后登录2006-04-13
  • 粉丝1
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-13 16:41
网上的抖动算法效果都不是很好。想一想就知道了,有些公司连pattern都申请专利了,怎么可能会有人在网上公布呢!所以最好的结果是让系统来完成halftone的工作,否则打印效果将很难满足客户的要求的
| -''/"',___,,--''"`-,_¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ `6_ 6¡¡)¡¡ `-,¡¡(¡¡¡¡),`-.__.`)¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ /_Y_./',, _¡¡)¡¡`._¡¡`,``-..-'¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡_.'.`='¡¡ _ / / --'_.','¡¡¡¡¡¡¡¡¡¡¡¡ (il)'¡¡¡¡¡¡(li)''¡¡ ((!-'¡¡¡¡ÃÃÃÃ! ±ðÅÜ£¿!
terrificskyfox
驱动小牛
驱动小牛
  • 注册日期2003-03-12
  • 最后登录2014-04-28
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-17 22:17
wolflee和hcheng_qi能不能比较详细的介绍一下在98的打印驱动中具体怎样让系统实现halftone,我前一段时间一直在找这个算法,确实非常难找,几乎没有,找到一个简单的算法试验了一下,转换完后的效果在电脑上看还可以,打印出来效果非常差,一个朋友介绍我去看看gimp的源代码,工程太浩大了,暂时没有那么多的时间来作,计算机图形学的树上只有简单的提了一下原理,具体的一点参考都没有,感谢各位关注


[编辑 -  8/17/03 by  terrificskyfox]
terrificskyfox
驱动小牛
驱动小牛
  • 注册日期2003-03-12
  • 最后登录2014-04-28
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-08-17 22:20
就是抖动算法,网上找一个就是了,请问你在做全代码方式的
打印驱动吗?


我并没有从底层开始开发,是基于Unidriv的,从底层开始做对一个公司都很困难,更何况我只是一个人在做这个项目,95和2000ddk中倒是有从底层开始做的例子,不过他们都是plot,没有关于bmp的处理,复杂程度相当高,很难做,建议还是不要采用这种方案
hcheng_qi
驱动老牛
驱动老牛
  • 注册日期2002-11-07
  • 最后登录2006-04-13
  • 粉丝1
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-08-18 09:11
你去查查GDIINFO,里面有设置halftone的参数的,ulHTPatternSize、ulHTOutputFormat好像要作设置的

[编辑 -  8/18/03 by  hcheng_qi]
| -''/"',___,,--''"`-,_¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ `6_ 6¡¡)¡¡ `-,¡¡(¡¡¡¡),`-.__.`)¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡¡¡ /_Y_./',, _¡¡)¡¡`._¡¡`,``-..-'¡¡¡¡¡¡¡¡¡¡¡¡ ¡¡_.'.`='¡¡ _ / / --'_.','¡¡¡¡¡¡¡¡¡¡¡¡ (il)'¡¡¡¡¡¡(li)''¡¡ ((!-'¡¡¡¡ÃÃÃÃ! ±ðÅÜ£¿!
terrificskyfox
驱动小牛
驱动小牛
  • 注册日期2003-03-12
  • 最后登录2014-04-28
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-08-18 13:54
你去查查GDIINFO,里面有设置halftone的参数的,ulHTPatternSize、ulHTOutputFormat好像要作设置的

[编辑 -  8/18/03 by  hcheng_qi]


这个好像是2000ddk才支持的
goyejin
驱动牛犊
驱动牛犊
  • 注册日期2007-03-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望100点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-04-15 09:43
terrificskyfox大侠,你最终有解决吗?

我现在是在win2000DDK的Unidrv基础上开发的,我现在是想在程序中控制输出黑白图,你上面说设置GDIINFO的ulHTPatternSize、ulHTOutputFormat、flHTFlags可以实现,我想知道是怎样设置的。

万望不吝赐教。
knight_temp
驱动牛犊
驱动牛犊
  • 注册日期2002-07-30
  • 最后登录2011-05-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望13点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2007-04-17 11:57
你打印出来的图到底是单色黑白的还是彩色的?
到底差在什么地方?
打印的时候虽然光栅化的抖动算法有很多种,但是还是要看最终印刷(或打印)介质与方式的差别来决定
使用那种算法,并且在最终表现画面的时候还有色域转换(ICC)的问题,只有色域对应好了,最终的画面
表现效果才会好,这个跟具体抖动的算法关系并不是很大。
llano
驱动牛犊
驱动牛犊
  • 注册日期2001-05-28
  • 最后登录2009-02-22
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-04-23 11:56
误差扩散法
A1=1 A2=2 A3=4 A4=2 A5=1
A6=2 A7=4 当前点

P*=P+1/16SIGMA(AiXERRi)   i=1~7

白 P*〉128
黑p*<128
游客

返回顶部