基于OpenCV的CT图像处理

       opencv2.0版本直接使用Mat这个类存储读入的图像。对于黑白图像,它存储的是图像的灰度值,存储的形式类似于一个二维数组;对于彩色图像,它分为三通道存储,三通道对应于RGB。这里我们着重讨论黑白图像,因为彩色图像相当于它的扩展。灰度值用0到255间的整数表示,而对于CT图像,它的像素值的表示比较复杂,从负几千到正几千都有,我们可以使用ITK依次读取CT图像的每个像素值,并可以将其每个像素值保存在Mat中,但这时通过opencv的imshow函数不能够显示出来,可以进行适当的处理,将像素值变换到0到255的范围显示出来。通过实验发现,opencv的Mat中只有定义的数据类型为uchar才可以进行显示。将CT图像保存在Mat中后,我们就可以直接调用opencv中的函数对CT图像进行处理。ITK可以直接对CT图像进行处理,并且网上说ITK是一个功能非常强大的库,但有些opencv中的处理函数在ITK中并没有,不知道是自己没有找到还是什么的。但ITK对三维体数据的处理还是非常有效的。接下来我们可以在ITK中创建一个图像,将opencv处理的结果图像按像素传入ITK中的图像。在ITK中创建一个写文件的指针,就可以将处理后的图像写入文件中(如jpg、dcm等)。

       我在opencv中做的操作主要有对CT图像进行二值化、闭操作的预处理、轮廓提取、找出最大轮廓、用凸多边形进行轮廓逼近和多边形的填充。过程的各个图如下所示。

基于OpenCV的CT图像处理_第1张图片

       这个过程中感谢唐帆同学对我的帮助,希望你尽快找到自己的另一半~

你可能感兴趣的:(CT图像表面重建)