《数字图像处理》学习笔记(四)--混合空间增强法(待修改)

来源:互联网 发布:淘宝睡衣常用模特 编辑:程序博客网 时间:2024/05/17 07:40

    这次试验问题很多,应该还是数据格式的问题,先发上来吧,放假回去先用Matlab做下,再改改。。。。。

   下面对一幅人体骨骼扫描图进行混合空间增强(有点吓人)。。。我们的目标是通过图像锐化突出骨骼的更多细节来增强图像。由于图像灰度的动态范围很窄并且伴随着很高的噪声,所以很难对其进行增强。对此,我们采取的策略是:首先用拉普拉斯变换突出图像中的小细节,然后用梯度法突出其边缘。平滑过的梯度图像将用于掩蔽拉普拉斯图像,最后通过灰度变换来扩展图像的灰度动态范围。

1. 首先进行拉普拉斯变换

   首先通过拉普拉斯变换突出图像的小细节。

2. 再进行拉普拉斯加强算法(未标定,补做。。。)

   图像加强(锐化)

3. 再进行sobel梯度算法

  再通过sobel算法突出边缘

4. 再进行拉普拉斯加强后的图像与sobel处理后的图像乘法

得到强边缘和噪声减少的结果

5. 最后进行幂律变换(这个还没做。。。。完全弄明白回来补做)

#include "dipHeader.h"void main(){IplImage* bone = cvLoadImage("bone.tif",0);IplImage* bone2s = cvCreateImage(cvGetSize(bone),IPL_DEPTH_16S,bone->nChannels);IplImage* bonelap = cvCreateImage(cvGetSize(bone),IPL_DEPTH_16S,bone->nChannels);IplImage* bonelap2f = cvCreateImage(cvGetSize(bone),IPL_DEPTH_32F,bone->nChannels);IplImage* bonesub = cvCreateImage(cvGetSize(bone),IPL_DEPTH_16S,bone->nChannels);//IplImage* bonecal = cvCreateImage(cvGetSize(bone),IPL_DEPTH_16S,bone->nChannels);IplImage* bonesob = cvCreateImage(cvGetSize(bone),IPL_DEPTH_8U,bone->nChannels);IplImage* bonesob2f = cvCreateImage(cvGetSize(bone),IPL_DEPTH_32F,bone->nChannels);IplImage* bonemul = cvCreateImage(cvGetSize(bone),IPL_DEPTH_32F,bone->nChannels);cvLaplace(bone,bonelap,7);cvConvertScale(bone , bone2s , 1.0, 0.0);cvSobel(bone,bonesob,1,0,3);cvConvertScale(bonesob,bonesob2f,1.0,0.0);cvConvertScale(bonelap,bonelap2f,1.0,0.0);cvAddWeighted(bone2s,1.0,bonelap, -1.0, 0.0, bonesub);cvMultiplyAcc(bonelap2f,bonesob2f,bonemul);/*int x,y;for (y=0;y<bonesub->height;y++){short* bonesub_data = (short*)(bonesub->imageData+y*bonesub->widthStep);short* bonecal_data = (short*)(bonecal->imageData+y*bonecal->widthStep);for(x=0;x<bonesub->widthStep;x++){bonecal_data[x] = (short)(bonesub_data[x]+255) / 2;}}*/cvNamedWindow("bone",0);cvShowImage("bone",bone);cvNamedWindow("bonelap",0);cvShowImage("bonelap",bonelap);cvNamedWindow("bonesub",0);cvShowImage("bonesub",bonesub);//cvNamedWindow("bonecal",0);//cvShowImage("bonecal",bonecal);cvNamedWindow("bonesob",0);cvShowImage("bonesob",bonesob);cvNamedWindow("bonemul",0);cvShowImage("bonemul",bonemul);cvWaitKey(0);}


 

 

 

0 0
原创粉丝点击