没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
CxImage 图像处理类库
CxImage 是一个可以用于 MFC 的 C 图像处理类库类 , 它可以打开 , 保存 , 显示 , 转换各种常见格式的图像文件 , 比如 BMP,
JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K 等格式的文件 。 可以实现 BMP<->JPG , PNG <>TIFF 格式
等等的互相转换。
CxImage 不仅可以实现图像文件的类型转换,还可以实现在内存图像数据的类型转换,并且使用很方便。除了文件格式的
相互转换,它还提供了很多很多图像后处理的功能,比如图像模糊,锐化等等,功能非常强大和实用。
CxImage 中的 x ,大约代表了丰富的图像格式支持和丰富的图像处理功能,可以说 CxImage 是图像处理的十全大补汤。
用 CxImage 实现的图像处理程序
开发环境: VC6, C , Windows, MFC, Visual Studio, VS6, Dev
简介和许可
CxImaage 是一个可以简便而快速地打开 , 保存 , 显示和转换图像文件的 C 类库 。 CxImage 类库是免费的 。 对于 TIFF , JPEG
,
PNG 和 ZLIB , " 如果你在你的产品中使用了这些源代码,虽然致谢不是必须的,但是却会得到众人的欣赏。 "
CxImage 是开源的并在 zlib 许可下发布。简单地说,你可以随意地使用这些代码,只要你不说它是你自己的就行了。
文件格式和链接的库
CxImage 支持如下这些库的最新版本:
Zlib (1.2.3), Jasper ( 1.900.1), LibMNG (1.0.10), LibPNG (1.2.24). LibTIFF 3.8.2
j2k 库 ( 现在被称为 openjpeg ) 和相关的类 CxImageJ2K 已经从项目中删除 。 JPEG2000 格式的文件由 Jasper 和 CximageJAS 来支
持。
Cximage 6.00 提供了一个新的类 CximageRAW 和新的库 LibDCR , 用于读取来自数码相机的 RAW 图像 。 常见的文件扩展名
有:
RAW,
CRW,
NEF, CR2, DNG, ORF,
ARW,
ERF, 3FR, DCR, X3F, MEF, RAF,
MRW,
PEF, SR2 。
CximageRAW 提供了对图像的基本解码功能,它唯一的可选参数可以由 SetCodecOption 进行设置,以对插值质量进行可控
制。可选的选项有 (DECODE_QUALITY_LIN=0, DECODE_QUALITY_VNG=1, DECODE_QUALITY_PPG=2,
DECODE_QUALITY_AHD=3).
CximagePNG: 现在可以读取所有 PNG_COLOR_TYPE_ 类型。但是,每个通道含有超过 8 位像素深度的 PNG 文件,会被转
换到 8 位,这是 CxImage 的一个主要限制。
CxImageGIF: 现在能够更好地支持对动态 GIF 图像的读取,通过 SetRetreiveAllFrames 设置属性,可以同时对图像中的所有
帧进行解码。在 CxImage 的示例项目中,展示了如何实现这一选项,并展示了如何播放一副 GIF 动画。
CxImageBMP: 支持对 32 位图像的读写 ( 支持 Alpha 通道 )
CxImageICO: 支持对 Vista PNG 图标的读写;添加对多页图标的支持。
CxImageMNG: 支持对 MNG Alpha 图层的读取。
CxImageSKA: 新的用于支持 SKA 图像格式的类,这种图像通常用在视频租赁软件中。
CxImageJPG: 为 JPEG 图像格式的二次采样提供了 新的选项 。 ENCODE_SUBSAMPLE_422 , ENCODE_SUBSAMPLE_444)
,
默认情况下是 高采样率的 4:1:1 。当然,也可以被设置成中等的 4:2:2 或者低等的 4:4:4 。
下图展示了不同采样率下 , 在压缩图像中所产生的不同数量的伪影 。 在压缩有着明显轮廓的图像的时候 , 采用 4:4:4 的采样
率有助于减少轮廓的伪影。
可移植性
所有的类和项目都通过了不同编译器的测试,包括从 VC 6 到 VC 2008 的微软系列编译器, Borland C Builder 3 和 6 ,同时
部分地支持 wxDev-C 和 MinGW 。
所有的库都支持 UNICODE 和非 UNICODE 两个版本 。 (感谢 Eric Jesover )
对于第一次使用的用户 , 你可以使用一个轻量级的版本 (cximage600_lite) 。 这个版本去除了 C 库 , 但是添加了一个简单的示
例项目。
所有控制台示例 (\demo2) 和 CxImageCrtDll 项目可以在 VC Express2005 和 Microsoft Platform SDK 环境下编译通过 。 如果你
在编译链接的时候,遇到像 "unresolved external..."( 无法找到外部符号 … ) 这样的错误,请检查是否所有 C 库都被编译了。或者手
动地添加 gdi32.lib 和 user32.lib 为项目的依赖库。
同时, CxImage 也可以在 Pocket PC 2003 上工作。在 CxImage 中,为 VC 2005 编译器提供了一个可以工作的版本和相应的
实例 (cximage600_ce) 。 对于旧式的嵌入式 VC 编译器 , 最主要的限制是无法支持对异常的处理 。 为了解决这个问题 , 相应的异常
处理语句 try , throw 和 catch 已经被定义在 ximadef.h 中的三个宏取代,同时还定义 了
CXIMAGE_SUPPORT_EXCEPTION_HANDLING 。通过这样的方法,取消对异常处理的支持,可以成功编译链接整个库。虽然
这个解决办法不是那么优雅,但是当异常处理被取消的时候,对代码的影响是最小的。同时,当异常处理被启用的时候,同样
不会造成源代码的修改与变动。
对于平台之间 little-endian 和 big-endian 的兼容性 , 对于内建支持的图像文件格式 (bmp, ico, tga, pcx, gif, ska) , 由 ntohs 和 ntoh l
控制。
示例
大多数新的特性可以在 CxImage 的主要示例程序中尝试和体验。这个示例程序只是一个测试平台,虽然它提供很多有用的
特性,但是它实在不是一个严谨的应用程序。
· CQuantizer : 这个类被 DecreaseBpp 菜单项所使用。在以前的版本中,这里有一个取整的错误,在某些情况下,白色
(255,255,255) 会被转换成 (254,254,254) 。在新的版本中,这个问题已经被修复了。
· Copy/Paste : 现在,新的粘贴功能支持元文件图像(例如,从 Office 应用程序中复制而来的图像 ) 。这个示例内部使用了自
定义的剪切板格式以测试 Dump/Undump 方法。 Copy 只工作在当前选区,但是你可以通过 CxImage\Remove Selection 复制整幅
图像。
· FloodFill : (\View\Tools\Flood Fill) 通过一个浮动的对话框,你可以测试色彩填充的颜色,偏差,透明度和是否选择。当透
明度为 0 并且选择区域功能启用的时候,这个功能就变现为 " 魔法棒 " ,用于根据颜色选区某个区域。
· Graph data extraction : (\Filters\graph data extraction) 这个示例演示了如何从图像(从扫描仪获取或者从互联网下载所
得)中提取数字信息。转换后的数据被粘贴到剪切板,同时可以被保存成文本文件或者 Excel 表格文件。
数据提取对话框
数据提取结果
· RedEyeRemove : (\Filters\Non Linear\Remove Red Eye) 去除红眼的功能在照片处理中经常用到。你 必须在红眼周围选择一
个区域,然后去除红眼的功能就会对红色通道进行过滤,从而去掉照片中的红眼。红眼的选区是一个矩形区域,同时可以包括
部分的虹膜 ( 眼黑 ) ,过滤器会在以选区中点为中心的圆心区域工作,不会影响到选中的眼黑部分。
· SelectiveBlur / UnsharpMask : 这些非线性的滤镜可以增加图像的质量 。 SelectiveBlur 可以去除二次噪声 ( 比如 JPEG 图像中
的伪影或者是数码相机的噪声 ) ,从而展示图像中的更多细节。而 UnsharpMask 可以增强图像的细节,但是却不会添加噪声。
· Custom linear filters : (\Filters\Linear\Custom) 一个用于测试新的滤镜功能核心的图像用户界面。
· Histogram : (\Colors\Histogram\...) 为了测试 HistogramStretch( 直方图 ) , 这个示例中提供了很多菜单项 , 通过不同的方法 (0 =
luminance, 1 = linked channels , 2 = independent channels) 来测试直方图功能。对于有噪声的图像,阈值 (threshold) 这个参数增强了
算法的健壮性。半饱和度 (Half Saturation) 和全饱和度 (Full Saturation) 可以测试转换颜色空间 (ConvertColorSpace) ,直方图
(Histogram) 和饱和度 (Saturate) 在 YUV 颜色空间对直方图的拉伸效果。
· Thresholding : ( \Colors\Threshold... and \Colors\Adaptive Threshold). 透明度阈值 (OptimalThreshold) 是一个新的用于查找二进
制图像透明度阈值的新方法。可选的算法有:
1 = 最大类间方差 (Otsu);
2 = 基特勒和伊尔林格沃斯 (Kittler & Illingworth);
3 = 最大熵 (maximum entropy);
4 = 位差 (potential difference);
0 = 平均所有方法 ( 默认情况下,这也是示例程序中所使用的方法 );
" 保留低于阈值的颜色 "(preserve colors less than the threshold) 的选项 , 将测试 Threshold2 方法 。 这对于过滤带有噪声背景的彩
色图像很有用 。 经过处理 , 我们将得到一幅带有一致背景的彩色图像 ( 噪声被去除 ) 。 AdaptiveThreshold 是对方法 OptimalThreshol d
的一个应用,它将创建很多阈值模板。 AdaptiveThreshold 对于有着不一致的灯光照射效果的图像,非常有用。对于这类图像,
我们不能简单地在整幅图像中使用某个单一的阈值 。 但是 , 如果我们的参数设置得不对 , 我们将得到一个非常差劲的处理结果
。
剩余31页未读,继续阅读
资源评论
- redfeng_12014-04-02挺有用处,只是不知道能不能在C#里调用
- qqxyz_good2015-09-16不错的资源,参考价值比较高
- davidzzu2016-10-25感谢分享,学习一下
wrmsr
- 粉丝: 5
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功