C++图像处理中,如何获取指向dib对象像素的指针?

目前比较出名的图像处理库有很多,比如LEADTOOLS,这个是功能非常强大的图像多媒体库,但是这个是收费注册的。开源的图像库也有不少,比如:ImageStone、GIMPCxImage等,虽然它们的功能没有LEADTOOLS强大,但是一般的图像处理是可以应付的。

下面分别介绍这几种图像处理库的使用方法。

LEAD Technologies 是一个拥有九年多开发数字图形技术历史的公司,他专为程序开发者提供软件开发工具包。他已经为微软等公司提供了很多图形图象技术。这个软件包是该公司开发的开发工具的集合,包括占线帮助,Lead API、C++ 类库、ActiveX 控件、VCLs 和一些实例原代码等。这个软件包是开发工具的集合包括占线帮助,Lead API、C++ 类库、ActiveX 控件、VCLs 和一些实例原代码等。

(1)对显示设备的全面支持:在显示时,你的程序中无需考虑是哪种显示模式,如16色还是真彩色。LeadTools为你做了所有的事。当然你也可以通过设置参数获得对显示设备更多的控制。你还可以实现自己的调色板。

(2)支持多种文件格式:表 示例

LEADTOOLS Medical Imaging包含了一些精心挑选的、经过优化的特性,可以满足医疗成像应用程序开发的特殊需要,比如,完全的DICOM数据集支持,可以支持8-16位灰度级,以及12和16位的图像处理,窗位(Window Leveling)显示,还包含LUT处理。

支持8、10、12、16灰度级和24位图像,包括JPEG(8、10、12、16位无损灰度级,8、12位有损灰度级,24位无损和有损色彩),JPEG2000(包括有损和无损8-16位灰度级图像和24位色彩)行程,无压缩,光学表示(单色1、单色2、调色板、RGB、ARGB、CMYK、YBR 全422、YBR全、YBR_RCT、YBR_ICT),以及单框架和多框架图像。

完全支持DICOM 3(2003文件规范),包括所有标准的IOD类和形态(CR、CT、MR、NM、US、RF、SC、VL等),还包含VR’s。

为DICOM的基本目录提供简单的执行操作和完全技术支持。只需要几行代码就可以使用高级COM对象来创建DICOMDIR。

通过调用一个函数,可以将一种转移语法变为另一种转移语法。自动识别DICOM文件(Little-Endian/Big-Endian,隐藏/显示VR等等)。并具有高级和低级函数,可用于数据集的简单导航和操作(插入、删除、修改)。

单框架或多框架的图像(压缩的或未压缩的)。

对大量不同厂商的硬件支持。

包含了可使用的源代码和可执行代码。

对DICOM有4个不同的编程接口-API、COM、VCL、C++类库。支持DICOM2003标准中所有的VR’s,包括“其它浮动字符串”。

具有高级和低级函数,可用于数据集的简单导航和操作(插入、删除、修改)。

LEADTOOLS自动加入了项定界项和序列定界项以简化数据集的嵌套(VR of “SQ”)。

易于对项进行顺序定位(FFFE,E000)。

简化了重组处理(多重覆盖和曲线数据)。

LUT,VOI LUT,Palette色彩图像的高级支持意味着开发人员可以毫不费力地在一个应用程序中实现DICOM表示状态。LEADTOOLS还可以将Modality LUT应用于图像数据,以进一步简化图像处理和统计计算。

DICOM注释对象支持。可以从数据集内存储/获取DICOM注释,并且将它们转换为LEAD注释对象,反之亦然。为了附加的统计计算和存储为DICOM表示状态,注释也可以被转换为Region of interest。
Cookie剪切工具:可以从一个放射性图像扫描文件中提取出单独的薄片(对于识别一个扫描MRI或CT系列内的每个薄片很有帮助)。

MRI大脑分析工具:可以用于计算胼胝体(大脑中部的白色物质,就像字母X)和脑球体之间的比率。

SDK创建具有专业水准的高品质的多媒体应用程序。该控件中加入了诸如捕获、播放和编辑等多媒体功能以及对最新的DirectShow过滤和许多多媒体文件格式的支持,即可以加载和转换多种文件格式(包括WAV、AVI、ASF、WMA、WMV、MPEG-1、OGG等等)。可以编程控制多媒体处理、压缩,视频和音频输入;还增加了摄像控制(亮度、对比度、缩放等等);以及更灵活的捕获选项等等更多功能。

能够从WDM、本地DirectShow包括DV、Windows视频捕获设备中捕获视频图像,还可以控制DV设备等。

能够播放所有DirectShow所支持的文件。可以支持DVD导航,还可以将播放设置保存到文件或二进制流中等等。

利用控件包提供的功能,您的用户可以将多媒体文件在AVI,Windows Media content,WAVE和MPEG1 Audio(MP3)格式之间互相转换,还可以选择DV设备输出等等功能。

支持大部分流行的多媒体格式(AVI、ASF、WMV、WAV、OGG、MPEG-2、MPG)。点击此处可以得到一个所支持格式的列表。

通过可用的DirectShow过滤器压缩多媒体文件(内存中进行)。(Windows Media)

LEADTOOLS Multimedia包含了一个多媒体过滤器包的测试版,这个多媒体过滤器包具有强大的多媒体处理功能。

SDK是为开发者提供的用于创建功能强大的图像应用程序工具;采用LEADTOOLS的色彩转换、显示、压缩(JPEGTIFFCCITT G4 以及LEADCMP属性)、图象处理、TWAIN扫描、特效(超过2000种)、图像格式支持(超过150种图像文件格式)、打印、Internet/intranet 图像、数据库图像、图像公共对话框和屏幕捕获等特性,使用它,由此为你节省大量的时间与费用。

采用工业标准和专有压缩技术,可同时支持150多种图像文件格式以及sub-格式的加载、保存和转换。另外,采用LEADTOOLS能添加更多的格式支持,例如采用LEADTOOLS PDF插件,即能实现对PDF文件的加载、保存和转换支持。

CxImage类库是一个优秀的图像操作类库。它可以快捷地存取、显示、转换各种图像。有的读者可能说,有那么多优秀的图形库,如OpenIL,FreeImage,PaintLib等等,它们可谓是功能强大,齐全,没必要用其它的类库。但我要说,这些类库基本上没有免费的,使用这些类库,你要被这样那样的许可协议所束缚。在这点上,CxImage类库是完全免费的。另外,在使用上述类库时,你会遇到重重麻烦。因为它们大部分是平台无关的,且用C语言写成,有的还夹杂着基本的C++ wrapper和成堆德编译选项的声明需要你去处理。而CxImage类库在这方面做得很好。还有让我最看好的,就是作者完全公开了源代码。相对于那些封装好的图形库和GDI+来说,这一点使我们可以进一步学习各种编解码技术,而不再浮于各种技术的表面。如果想下载CxImage,可以上下载。 CxImage类库的结构:

一个CxImage对象是一个扩展了的位图。作者只是在位图结构上添加了一些起存储信息作用的成员变量。一个CxImage对象(同时)也是一组层。每个层只有在需要时才会分配相应的缓冲区。CxImage::pDib代表着背景图像,CxImage::pAlpha代表着透明层,CxImage::pSelection代表着被选中的层,被用来创建图像处理时让用户感兴趣的区域。在这三个特殊层面的基础上,你可以增加一些额外的层,这些层可以存储在CxImage::pLayers中。一般说来,层是一个完整的CxImage对象。因此,你可以构造很复杂的嵌套层。下面是CxImage的一些成员变量:

需要大家注意的是:整个CxImage类库非常大。如果你只需要能处理其中的几种格式,你可以在主要的头文件ximage.h中找到一些开关选项来关闭一些图像库。JPG、PNG、TIFF中的每一个库,都会向最终程序增加约100KB的内容。而CxImage类库压缩后只有约60KB。所以,你需要谨慎挑选一些你真正需要的类库。作者提供的示例工程在编译后,你会发现如下一些文件:

图像加强------对比度加强。对比度加强能够分为(1)直接对比度加强;(2)间接对比度加强。直接对比度加强能够分为线性变换,分线段线性拉伸,以及指数拉伸与对数拉升。间接对比度加强主要就要直方图均衡化。c++

直方图均衡化的主要思想是:把原始图像的灰度直方图从比较集中的某个灰度区间变成在所有灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,从新分配图像像素值,使必定灰度范围内的像素数量大体相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。算法

(1)根据图像灰度计算灰度密度函数PDF.spa

(5)把原图像素点值为rk的变换为sk。图片

利用opencv实现以下:


左边为原图,右边为均衡化效果。

* 该函数用来对图像进行直方图均衡。 // 计算各个灰度值的计数 // 计算对应的新灰度值 // 指向DIB第i行,第j个象素的指针


右图为原图,左图为灰度均衡化后的图片。

身份认证 购VIP最低享 7 折!

使用c++语言提取bmp图像的像素信息,然后将这些信息储存在图像像素.txt中,同时能够将读取之后的图像复制一遍储存。

我要回帖

更多关于 c++二维数组指针 的文章

 

随机推荐