搜档网
当前位置:搜档网 › OpenCV统计应用-直方图反向投影

OpenCV统计应用-直方图反向投影

OpenCV统计应用-直方图反向投影
OpenCV统计应用-直方图反向投影

OpenCV统计应用-直方图反向投影

影像处理的统计直方图,可以知道一张图片在该色彩空间的数据分布状况,而这边,就要介绍到直方图反向投影的函式,直方图反向投影,也就是将数据分布的状况依照Look-up table的方式对应回去,实际上,这个函式是跟前面介绍到的cvLUT()是一样的,只不过,差别是差异在cvLUT()的第三个自变量改变成CvHistogram数据结构的输入,直方图反向投影,cvCalcBackProject()的第一个自变量是输入单信道IplImage数据结构,第二个自变量是输出单信道IplImage反向投影图形数据结构,第三个自变量是选定要被反向投影的CvHistogram直方图数据结构,而cvCalcBackProject()把前面提到的Look-up table的计算方式包在cvCalcBackProject()函式的底层,因此,它可以整合CvHistogram这个数据结构做更多的应用,下面这个就是修改前面的范例"OpenCV统计应用-CvHistogram直方图数据结构",来做直方图反向投影的程序

灰阶直方图反向投影

#include

#include

#include

int HistogramBins = 50;

int HistogramBinWidth;

float HistogramRange1[2]={0,255};

float *HistogramRange[1]={&HistogramRange1[0]};

CvPoint Point1;

CvPoint Point2;

int main()

{

IplImage *GrayImage1;

IplImage *Image1;

IplImage *Image2;

IplImage *BackProjectImage;

CvHistogram *Histogram1;

IplImage *HistogramImage1;

Image1=cvLoadImage("Riverbank.jpg",1);

Image2=cvCreateImage(cvGetSize(Image1),IPL_DEPTH_8U,3);

GrayImage1=cvLoadImage("Riverbank.jpg",0);

BackProjectImage=cvCreateImage(cvGetSize(Image1),IPL_DEPTH_8U,1);

Histogram1 = cvCreateHist(1,&HistogramBins,CV_HIST_ARRAY,HistogramRange);

HistogramImage1 = cvCreateImage(cvSize(256,300),8,3);

cvSetZero(HistogramImage1);

HistogramImage1->origin=1;

HistogramBinWidth=256/HistogramBins;

cvCalcHist(&GrayImage1,Histogram1);

cvNormalizeHist(Histogram1,5000);

cvThreshHist(Histogram1,50);

cvCalcBackProject(&GrayImage1,BackProjectImage,Histogram1);

cvCopy(Image1,Image2,BackProjectImage);

for(int i=0;i

{

printf("%f\n",cvQueryHistValue_1D(Histogram1,i));

Point1=cvPoint(i*HistogramBinWidth,0);

Point2=cvPoint((i+1)*HistogramBinWidth,(int) cvQueryHistValue_1D(Histogram1,i ));

cvRectangle(HistogramImage1,Point1,Point2,CV_RGB(127,127,127));

}

cvNamedWindow("Histogram1",1);

cvNamedWindow("Riverbank",1);

cvNamedWindow("Back Project RiverBank",1);

cvShowImage("Riverbank",Image1);

cvShowImage("Back Project RiverBank",Image2);

cvShowImage("Histogram1",HistogramImage1);

cvWaitKey(0);

}

执行结果:

这边就是拿前面灰阶去除较小直方图区块的程序代码做修改,然后将前面去除最小区块的部份,对应到彩色的图片去了,显示的结果会是,只要是影像里面灰阶值分布数量比较少的数据,全部都被对应成黑色的像素,也就是全部都变成0,而cvCalcBackProject(),就跟cvLUT()一样直接拿直方图的数据去对应,假设一个直

方图从头开始的数据为254,129,80,70....那么只要是图片内像素值为1的数据就会对应到254,1的图片里面像素值的数据就会直接变成254,像素值为2的就会对应到129,2的数据就会直接变成129,以此类推,因此,用cvThreshHist()去除小于50的直方图区段,让小于50的全部归0,再来,对他做一个图片的反向投影,所对应出来的结果虽然不是0或255,可是它却可以直接拿来当做是屏蔽,也就是说,直接拿来给cvCopy()来做对应,因此,反向投影的结果就出来啦,在屏蔽的部份就要参考"数据结构操作与运算-图形的Mask屏蔽实作",而这段程序代码则是用到"OpenCV统计应用-CvHistogram数据结构操作"里面的部份.

在OpenCV Documentation的部份有提到cvCalcBackProject()可以对HSV色彩空间的Hue做反向投影,到底是怎么实作出来呢?在OpenCV的Sample Code里面有一个camshift.c的程序,就是用到这个反向投影的函式,而它的反向投影的简单范例,原理就如下所示

HSV色彩空间反向投影

#include

#include

#include

IplImage *Image1,*Image2;

IplImage *HSVImage;

IplImage *HueImage;

IplImage *BackProjectHueImage,*BackProjectImage;

CvHistogram *Histogram1;

IplImage *HistogramImage1;

CvPoint Point1,Point2;

int HueValue=0;

int HistogramBins = 180;

int HistogramBinWidth;

float HistogramRange1[2]={0,180};

float *HistogramRange[1]={&HistogramRange1[0]};

void onTrackbar(int position);

int main()

{

Image1 =cvLoadImage("Riverbank.jpg",1);

HSVImage = cvCreateImage( cvGetSize(Image1),8,3);

HueImage = cvCreateImage( cvGetSize(Image1),8,1);

BackProjectHueImage = cvCreateImage( cvGetSize(Image1),8,1);

BackProjectImage = cvCreateImage( cvGetSize(Image1),8,3);

Histogram1 = cvCreateHist(1,&HistogramBins,CV_HIST_ARRAY,HistogramRange);

HistogramImage1 = cvCreateImage(cvSize(180,300),8,3);

HistogramImage1->origin=1;

cvCvtColor( Image1, HSVImage, CV_BGR2HSV );

cvSplit(HSVImage,HueImage,0,0,0);

cvCalcHist( &HueImage, Histogram1);

cvNormalizeHist(Histogram1,5000);

cvZero( HistogramImage1 );

cvNot(HistogramImage1,HistogramImage1);

HistogramBinWidth = HistogramImage1->width/HistogramBins;

for(int i=0;i

{

Point1=cvPoint(i,0);

Point2=cvPoint(i,(int)cvQueryHistValue_1D(Histogram1,i));

printf("%d\n",(int)cvQueryHistValue_1D(Histogram1,i));

cvLine(HistogramImage1,Point1,Point2,CV_RGB(127,127,127));

}

cvNamedWindow("Riverbank",1 );

cvNamedWindow("Hue Histogram",1);

cvCreateTrackbar("Hue Thresh","Riverbank",&HueValue,250,onTrackbar);

cvShowImage("Riverbank",Image1);

cvShowImage("Hue Histogram",HistogramImage1);

cvWaitKey(0);

}

void onTrackbar(int position)

{

IplImage *Image2=cvCreateImage( cvGetSize(Image1),8,3);

CvHistogram *Histogram2= cvCreateHist(1,&HistogramBins,CV_HIST_ARRAY,HistogramRange); cvCopyHist(Histogram1,&Histogram2);

cvThreshHist(Histogram2,position);

cvCalcBackProject(&HueImage, BackProjectHueImage, Histogram2);

cvCopy(Image1,Image2,BackProjectHueImage);

cvZero( HistogramImage1 );

cvNot(HistogramImage1,HistogramImage1);

HistogramBinWidth = HistogramImage1->width/HistogramBins;

for(int i=0;i

{

Point1=cvPoint(i,0);

Point2=cvPoint(i,(int)cvQueryHistValue_1D(Histogram2,i));

printf("%d\n",(int)cvQueryHistValue_1D(Histogram2,i));

cvLine(HistogramImage1,Point1,Point2,CV_RGB(127,127,127));

}

cvShowImage("Hue Histogram",HistogramImage1);

cvShowImage("Riverbank",Image2);

}

执行结果:

在OpenCV里面,HSV色彩空间,色调(Hue)值的范围在0~180,饱和度(Saturation)的范围在0~255,亮度(Value)的范围在0~255,而这边就只取色调(Hue)值在做反向投影,开启了一个Track bar的功能,并且利用cvCvtColor()将BGR的色彩空间转换成HSV,并且用cvSplit()信道分割取Hue信道的图片,计算Hue值的直方图,在onTrackbar()的部份,则是用Trackbar来调整去除cvThreshHist()的最小区块的临界值,去除之后在反向投影到原始的Hue的图片,在由反向投影的结果当做屏蔽,直接跟彩色图片做对应.

而cvCalcBackProject()不单单只有这样的功能,它可以对多维度空间的色彩直方图做对应,cvCalcBackProject()提供了一个当CvHistogram数据结构维度为3的时候的一个反向投影,下面的这个例子就以HSV的色彩空间为例,建构一个三维的CvHistogram数据结构

HSV三维直方图反向投影

#include

#include

#include

IplImage *Image1,*Image2;

IplImage *HSV;

IplImage *HueImage,*SaturationImage,*ValueImage;

IplImage *ImageArray[3];

IplImage *BackProjectImage;

CvHistogram *Histogram1;

IplImage *HistogramImage1;

CvPoint Point1,Point2;

int HueValue=0;

int HistogramBins[3] ={180,256,256};

int HistogramBinWidth;

float HistogramRange1[6]={0,180,0,255,0,255};

float *HistogramRange[3]={&HistogramRange1[0],&HistogramRange1[2],&HistogramRange1[4]}; void onTrackbar(int position);

int main()

{

Image1 =cvLoadImage("Riverbank.jpg",1);

HSV = cvCreateImage( cvGetSize(Image1),8,3 );

HueImage = cvCreateImage( cvGetSize(Image1),8,1 );

SaturationImage = cvCreateImage( cvGetSize(Image1),8,1 );

ValueImage = cvCreateImage( cvGetSize(Image1),8,1);

ImageArray[0]=HueImage;

ImageArray[1]=SaturationImage;

ImageArray[2]=ValueImage;

BackProjectImage = cvCreateImage( cvGetSize(Image1),8,3 );

Histogram1 = cvCreateHist(3,HistogramBins,CV_HIST_SPARSE,HistogramRange);

cvCvtColor( Image1, HSV, CV_BGR2HSV );

cvSplit(HSV,HueImage,SaturationImage,ValueImage,0);

cvCalcHist( ImageArray, Histogram1);

cvNamedWindow("Riverbank",1 );

cvCreateTrackbar("Hue Thresh","Riverbank",&HueValue,200,onTrackbar);

cvShowImage("Riverbank",Image1);

cvWaitKey(0);

}

void onTrackbar(int position)

{

CvHistogram *Histogram2= cvCreateHist(3,HistogramBins,CV_HIST_SPARSE,HistogramRange); IplImage *Image2=cvCreateImage( cvGetSize(Image1),8,3 );

IplImage *BackProjectImage = cvCreateImage( cvGetSize(Image1),8,1 );

cvCopyHist(Histogram1,&Histogram2);

cvThreshHist(Histogram2,position);

cvCalcBackProject( ImageArray, BackProjectImage, Histogram2);

cvCopy(Image1,Image2,BackProjectImage);

cvShowImage("Riverbank",Image2);

}

执行结果:

在三维空间的作法上面,就要参考到前面"OpenCV统计应用-CvHistogram直方图数据结构"关于三维空间制作的部份,除了用cvCvtColor()将色彩空间转换,用cvSplit()将信道做分割,还要做个图形数组(ImageArray)来让cvCalcHist()这个函式做运算,计算出来的结果为一个CvHistogram的三维空间稀疏矩阵直方图,而在onTrackbar()的部份,cvCalcBackProject()直方图反向投影亦是同样要用ImageArray做输入,而输出则是一个单信道的图形,在稀疏矩阵里面,由于维度为三维,所以他所形成的统计直方图数值都是极小,所以门坎值只要一点点就快要全部都分布了,而这个三维空间的反向投影可以如此建构,是基于Look-up table的功能来实现,只不过他的缺点是,每一个维度的Look-up table范围是0~255,因此如果是像Hue值的范围0~180,它的数值就会被模糊化,也就是数据会被些许位移,但是仍不会影响它出来结果的精确度

在这个直方图反向投影的部份,也可以结合连通成分来做去除某一门坎值的连通分量

cvCalcBackProject()

将统计直方图的分布数据根据Look-up table对应回去,也就是说,当今天CvHistogram数据结构内的数据分布是243,110,0,60...则使用cvCalcBackProject()函式单信道的图片像素值会是,当遇到像素值为1的时候变243,像素值为2的时候变110,依此类推,cvCalcBackProject()直方图反向投影可以根据多维度设计,而cvCalcBackProject()第一个自变量为输入单信道IplImage或CvMat数据结构,第二个自变量为输入单通道反向投影IplImage或CvMat数据结构,第三个自变量为输入CvHistogram数据结构

cvCalcBackProject(输入单信道IplImage或CvMat数据结构,输入单信道反向投影IplImage或CvMat数据结构,输入CvHistogram数据结构)

数字图像处理实验报告

实验一灰度图像直方图统计 一、实验目的 掌握灰度图像直方图的概念和计算方法,了解直方图的作用和用途。提高学生编程能力,巩固所学知识。 二、实验内容和要求 (1)用Photoshop显示、了解图像平均明暗度和对比度等信息; (2)用MatLab读取和显示一幅灰度图像; (3)用MatLab编写直方图统计的程序。 三、实验步骤 1. 使用Photoshop显示直方图: 1)点击文件→打开,打开一幅图像; 2)对图像做增强处理,例如选择图像→调整→自动对比度对图像进行灰度拉伸,观察图像进行对比度增强前后的视觉变化。 3)利用统计灰度图像直方图的程序分别针对灰度拉伸前后的灰度图像绘制其灰度直方图,观察其前后的直方图变化。 2.用MatLab读取和显示一幅灰度图像; 3. 绘制图像的灰度直方图; function Display_Histogram()

Input=imread('timg.jpg'); figure(100); imshow(uint8(Input)); title('原始图像'); Input_Image=rgb2gray(Input); figure(200); imshow(uint8(Input_Image)); title('灰度图像'); sum=0; His_Image=zeros(1,256); [m,n]=size(Input_Image); for k=0:255 for I=1:m for j=1:n if Input_Image(I,j)==k His_Image(k+1)=His_Image(k+1)+1; end end end end figure(300); plot(His_Image); title('图像的灰度直方图'); 4.显示图像的灰度直方图。

matlab图像处理图像灰度变换直方图变换

附录1 课程实验报告格式 每个实验项目包括:1)设计思路,2)程序代码,3)实验结果,4)实验中出现的问题及解决方法。 实验一:直方图灰度变换 A:读入灰度图像‘debye1.tif’,采用交互式操作,用improfile绘制一条线段的灰度值。 imread('rice.tif'); imshow('rice.tif'),title('rice.tif'); improfile,title('主对角线上灰度值')

B:读入RGB图像‘flowers.tif’,显示所选线段上红、绿、蓝颜色分量的分布imread('flowers.tif'); imshow('flowers.tif'),title('flowers.tif'); improfile,title('主对角线红绿蓝分量') C:图像灰度变化 f=imread('rice.png'); imhist(f,256); %显示其直方图 g1=imadjust(f,[0 1],[1 0]); %灰度转换,实现明暗转换(负片图像) figure,imshow(g1)%将0.5到0.75的灰度级扩展到范围[0 1] g2=imadjust(f,[0.5 0.75],[0 1]); figure,imshow(g2) 图像灰度变换处理实例: g=imread('me.jpg'); imshow(g),title('原始图片'); h=log(1+double(g)); %对输入图像对数映射变换 h=mat2gray(h); %将矩阵h转换为灰度图片

h=im2uint8(h); %将灰度图转换为8位图 imshow(h),title('转换后的8位图'); 运行后的结果: 实验二:直方图变换 A:直方图显示 I=imread('cameraman.tif'); %读取图像 subplot(1,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(1,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题运行结果如下:

灰度图像直方图统计

1.灰度图像直方图统计实习报告 一、实习目的 在学习灰度图像直方图的概念、计算方法、性质和相关应用的基础上,应用Photoshop软件和编写灰度直方图统计程序,能初步掌握图像文件格式读写与图像数据处理,提高学生兴趣和编程能力,巩固所学知识。 二、实习内容 1.实习数据 E:\ 数字图像处理\实习一\Lena.raw 2.利用Photoshop显示图像的灰度直方图,从直方图上了解图像平均明暗度和对比度等信息。 3.要求利用C或C++语言编写灰度图像直方图统计的程序。 三、实习步骤 1.使用Photoshop显示直方图。 (1)点击“文件”-->“打开”,打开一幅图像,此处选取“lena.raw”; (2)点击“图像”-->“直方图”,显示图像的直方图;

(3)对图像做增强处理,例如选择“图像”-->“调整”-->“自动对比度”对图像进行灰度拉伸,然后再显示直方图,观察它的变化。 2.用C或C++编写显示直方图的程序。 具体代码如下: #include "stdio.h" #include "windows.h" void main() { FILE *fp; //文件类指针

fp=fopen("lena.raw","rb"); //打开二进制文件 if (fp==NULL) { printf("文件已损坏,请重新打开。 \n"); } else printf("文件已打开,已经生成.txt文档,请查看。\n"); BYTE PIXEL[512*512]; fread(PIXEL,1,512*512,fp);//二进制文件读取 fclose(fp);//关闭文件 int HistogramStat[256]; for(int i=0;i<256;i++) HistogramStat[i]=0;//赋初值 for (i=0;i<512*512;i++) { int a=PIXEL[i]; HistogramStat[a]++; } //统计像素个数 fp=fopen("灰度直方图.txt","rb"); fprintf(fp,"图像灰度,像素个数\n"); for (i=0;i<256;i++) { if (HistogramStat[i]!=0) fprintf(fp,"%5d,%5d\n",i,HistogramStat[i]); } fprintf(fp,"像素个数为0的已被省略。");//输出内容 } 四、思考题 1灰度直方图可以反映出一幅图像的哪些特性? 答:(1)表征了图像的一维信息。只反映图像中像素不同灰度出现的次数,而未反映像素所在的位置。即丢失了像素的位置信息。 (2)与图像之间的关系式多对一的映射关系。一幅图像唯一确定出与之对应的直方图,但不同的图像可能有相同的直方图。 (3)一幅图像可分为多个子区域,子图直方图之和为整图的直方图。 2灰度直方图有何用途?编程实现一种灰度直方图应用的程序。 答:(1)用于判断图像量化是否恰当。 (2)用于确定图像的二值化阈值。 (3)计算图像中物体的面积。 (4)计算图像信息量H(熵)。 3在本次实习的基础上,试编写直方图均衡的程序。 五、实习心得体会

实验1斜井水平投影图的编制及井轨迹确定

实验1 斜井水平投影图的编制及井轨迹确定 一、实验目的 斜井和定向井 井位确定的需要 为合理开发油田,对井身质量提出严格要求。但是某些井或一口井的部分井段,由于地层倾斜、岩性变化及钻井技术措施不当等原因使井发生偏斜;另外由于地质或钻井工程上的需要,要求钻一些定向井。为准确了解地下井位,有必要计算斜井的井轨迹并编制井斜水平投影图。 通过本次井轨迹计算,主要了解与掌握以下三点内容: 1、了解井斜测量数据的基本构成及其空间意义; 2、掌握斜井井轨迹的计算方法; 3、掌握井斜水平投影图编制方法及用途。 二、依据标准 1行业标准(内部标准) 2行业标准(内部标准) 三、基础资料 1、A井井斜测量数据; 四、实验原理 1、井斜测量数据构成 a 井斜角;b方位角;c 全变化角(狗腿角) 井眼轨迹 狗腿角

图1 井斜角、方位角概念、全变化角空间示意图 2、井斜水平投影图编制 井斜水平投影图就是把某斜井的各个斜井段投影到某一水平面上所得到的图件,反映实际井底偏离井口的水平位移和方位,及钻遇目的层的垂直井深,是油气勘探、开发的基础图件之一。 图2 某斜井井轨迹平面投影图 根据(图2)三角形AOB的关系,可知: H = L·cosα S = L·sinα O′A′=OA=L·sinα即为斜井段L在水平面上的投影。 同理,如果一口斜井由多个斜井段组成,则在水平面上可得到相应的水平投影,从而构成一口斜井的水平投影图。 五、实验内容及步骤 1、A井的井斜水平投影图; 1)计算各测点间斜井段的水平位移 Si=Li×sinαi(i=1,2,3,...n) 2)计算各测点间水平位移的直角坐标值 Xi=Si×sinβi ,Yi=Si×cosβi (i=1,2,3,...n)3)在方格纸上选适当位置为坐标原点(即井口)。画出十字的井口坐标。 4)分别绘出各测点的方位及水平位移(βi,Si),依次连成点线,点的位置代表测点,测点间用直线相连,即为该井的井斜水平投影图。 5)从井口与井的最后一测点连线,得出总的水平位移和总的井斜方位角(S总、β总)。 6)图件整洁完整 2、计算A井水平距、垂直距及累计垂直距; 六、实验仪器 1 直尺 2 量角器

基于灰度直方图的图像分割阈值自适应选取方法

中北大学 毕业设计(论文)任务书 学院、系: 专业: 学生姓名:车永健学号: 设计(论文)题目:基于灰度直方图的图像分割阈值自适应选取方法 起迄日期: 2015年3月9日~2015年6月20日设计(论文)地点: 指导教师:郭晨霞 系主任: 发任务书日期:2015年 2 月25 日

任务书填写要求 1.毕业设计(论文)任务书由指导教师根据各课题的具体情况填写,经学生所在系的负责人审查、系领导签字后生效。此任务书应在毕业设计(论文)开始前一周内填好并发给学生; 2.任务书内容必须用黑墨水笔工整书写或按教务处统一设计的电子文档标准格式(可从教务处网页上下载)打印,不得随便涂改或潦草书写,禁止打印在其它纸上后剪贴; 3.任务书内填写的内容,必须和学生毕业设计(论文)完成的情况相一致,若有变更,应当经过所在专业及系主管领导审批后方可重新填写; 4.任务书内有关“学院、系”、“专业”等名称的填写,应写中文全称,不能写数字代码。学生的“学号”要写全号(如020*******,为10位数),不能只写最后2位或1位数字; 5.有关年月日等日期的填写,应当按照国标GB/T 7408—94《数据元和交换格式、信息交换、日期和时间表示法》规定的要求,一律用阿拉伯数字书写。如“2004年3月15日”或“2004-03-15”。

毕业设计(论文)任务书

毕业设计(论文)任务书 3.对毕业设计(论文)课题成果的要求〔包括毕业设计(论文)、图纸、实物样品等): 1、论文一份; 2、程序代码及图像结果; 3、英文翻译一份。 4.毕业设计(论文)课题工作进度计划: 起迄日期工作内容 2015年 3月 9 日~ 3 月20日 4 月 1 日~ 4月 20 日 4 月 21 日~ 5月 10 日 5 月 11 日~ 6月 15 日 6 月 16 日~ 6月 19 日查找资料,完成开题报告; 学习有关知识,方案确定,完成中期报告;完善算法并仿真验证; 撰写、修改、评阅毕业论文; 论文答辩 学生所在系审查意见: 系主任: 年月日

绘制数字图像灰度直方图实验报告MATLAB实现

数字图像处理 实验报告 实验一绘制直方图 学号 姓名 日期

实验一绘制直方图 一、实验内容 1、编程绘制数字图像的直方图。 2、直方图均衡处理。 二、实验步骤 1、设计思想或者流程图。 灰度直方图是将数字图像的所有像素,按照灰度值的大小,统计其所出现的频度。通常,灰度直方图的横坐标表示灰度值,纵坐标为半个像素个数,也可以采用某一灰度值的像素数占全图像素数的百分比作为纵坐标。 直方图均衡方法的基本原理是:对在图像中像素个数多的灰度值(即对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并。从而达到清晰图像的目的。 2、源程序并附上注释。 clear all %一,图像的预处理,读入彩色图像将其灰度化 PS=imread('1.jpg');%读入JPG彩色图像文件 imshow(PS)%显示出来 title('输入的彩色JPG图像') imwrite(rgb2gray(PS),'PicSampleGray.bmp');%将彩色图片灰度化并保存 PS=rgb2gray(PS);%灰度化后的数据存入数组 %二,绘制直方图 [m,n]=size(PS);%测量图像尺寸参数 GP=zeros(1,256);%预创建存放灰度出现概率的向量for k=0:255 GP(k+1)=length(find(PS==k))/(m*n);%计算每级灰度出现的概率,将其存入GP中相应位置 end figure,bar(0:255,GP,'g')%绘制直方图 title('原图像直方图') xlabel('灰度值') ylabel('出现概率') %三,直方图均衡化 S1=zeros(1,256); for i=1:256 for j=1:i S1(i)=GP(j)+S1(i);%计算Sk end end S2=round((S1*256)+0.5);%将Sk归到相近级的灰度for i=1:256 GPeq(i)=sum(GP(find(S2==i)));%计算现有每个灰度级出现的概率

四、灰度直方图是数字图像处理的重要工作。请简述灰度直方图规定化

四、灰度直方图是数字图像处理的重要工作。请简述灰度直方图规定化、均衡化的基本原理。并以分辨率为5*4,图像的深度6bit 的图像为例,自举例说明直方图均衡化的计算过程。 解答: 数字图像的直方图是作为图像每一个灰度级的统计概率分布"它提供了图像灰度分布的概貌,直方图增强技术正是利用修改给定图像直方图的方法来增强图像的,最后得到的图像增强程度取决于我们所采用的直方图。令变量r 和s 分别代表图像增强前后的像素灰度级,相应灰度级分布的概率密度分别为()r P r 和()s P s 。 为讨论方便,假设像素灰度值已经归一化在区间[0,1],在灰度级坐标中r=0表示黑,r=1表示白。对区间[0,1]内任一个r 值按变换函数: s = T(r) (1) 进行变换,T (r )满足两个条件:(1)单值单调递增函数;(2) 0≤T (r )≤1。 条件(1)使灰度级保持从黑到白的次序,条件(2)保证映射变换后像素灰度值在允许的范围内。从s 到r 的反变换为:1()r T s -=,0≤s ≤1。 (2) 同样,规定变量s 也满足条件(1)和(2)。由概率理论知,若()r P r 和变换函数s = T(r) 已知,1()r T s -=是单值单调增加函数,则有: 1() ()[P () ]s r r T s dr P s r ds -== (3) 直方图增强技术就是通过变换函数T (r )控制图像灰度级的概率密度函数而改变图像的外貌。 对于连续图像,变换函数为: ()(),01r r s T r P r dr r ==≤≤? (4) 此式右边为累积分布函数(CDF ),由该式对r 求导有: ()r ds P r dr = (5) 代入(3)得到: 1()1 ()[() ]1,01() r r T s r P s P r s P r -===≤≤ (6) 这说明,在变换后变量s 在定义域内, ()s P s 是均匀概率密度。在图像增强意义上,这 相当于像素的动态范围增加。 对于离散图像,灰度级k r 的概率值为: (),01,0,1,2, (1) r k k n P r r k L n = ≤≤=- (7) 其中,n 表示图像中像素的总数,k n 是在图像中出现这种灰度级的次数,L 表示灰度级

数字图像实验报告二图像的灰度变换与直方图均衡

实验二图像的灰度变换与直方图均衡 一、实验目的 1.理解图像灰度变换与直方图均衡的定义; 2.掌握图像灰度变换与直方图均衡化的方法; 3.学会利用matlab编程实现灰度变换和直方图均衡的方法。 二、实验内容 1. 利用matlab语言直接编程实现图像的对比度调整; 2. 利用matlab语言编程实现图像的反转; 3. 利用matlab语言直接编程实现图像的二值化; 4. 利用matlab语言直接编程实现图像的直方图均衡化处理。 三、实验步骤 (一)利用matlab语言直接编程实现图像的对比度调整 实验代码如下: A=imread('E:\实验报告\数字图像处理实验报告\数字图像实验报告二通信五班韩奇20110803520\lena.jpg'); I=double(A); J=I*0.5+40; A1=uint8(J); figure(1);subplot(1,2,1),imshow(A); subplot(1,2,2),imshow(A1); J=I*1+40; A1=uint8(J); figure(2);subplot(1,2,1),imshow(A); subplot(1,2,2),imshow(A1); J=I*3+40; A1=uint8(J); figure(3);subplot(1,2,1),imshow(A); subplot(1,2,2),imshow(A1); J=exp(I); A1=uint8(J); figure(4);subplot(1,2,1),imshow(A);

subplot(1,2,2),imshow(A1); 生成图像如下:

图像处理实验报告

摘要: 图像处理,用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。基本内容图像处理一般指数字图像处理。数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。图像处理一般指数字图像处理。 数字图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。目前,图像处理演示系统应用领域广泛医学、军事、科研、商业等领域。因为数字图像处理技术易于实现非线性处理,处理程序和处理参数可变,故是一项通用性强,精度高,处理方法灵活,信息保存、传送可靠的图像处理技术。本图像处理演示系统以数字图像处理理论为基础,对某些常用功能进行界面化设计,便于初级用户的操作。 设计要求 可视化界面,采用多幅不同形式图像验证系统的正确性; 合理选择不同形式图像,反应各功能模块的效果及验证系统的正确性 对图像进行灰度级映射,对比分析变换前后的直方图变化; 1.课题目的与要求 目的: 基本功能:彩色图像转灰度图像 图像的几何空间变换:平移,旋转,剪切,缩放 图像的算术处理:加、减、乘 图像的灰度拉伸方法(包含参数设置); 直方图的统计和绘制;直方图均衡化和规定化; 要求: 1、熟悉图像点运算、代数运算、几何运算的基本定

义和常见方法; 2、掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法 3、掌握在MATLAB中进行插值的方法 4、运用MATLAB语言进行图像的插值缩放和插值旋转等 5、学会运用图像的灰度拉伸方法 6、学会运用图像的直方图设计和绘制;以及均衡化和规定化 7、进一步熟悉了解MATLAB语言的应用,将数字图像处理更好的应用于实际2.课题设计内容描述 1>彩色图像转化灰度图像: 大部分图像都是RGB格式。RGB是指红,绿,蓝三色。通常是每一色都是256个级。相当于过去摄影里提到了8级灰阶。 真彩色图像通常是就是指RGB。通常是三个8位,合起来是24位。不过每一个颜色并不一定是8位。比如有些显卡可以显示16位,或者是32位。所以就有16位真彩和32位真彩。 在一些特殊环境下需要将真彩色转换成灰度图像。 1单独处理每一个颜色分量。 2.处理图像的“灰度“,有时候又称为“高度”。边缘加强,平滑,去噪,加 锐度等。 3.当用黑白打印机打印照片时,通常也需要将彩色转成灰白,处理后再打印 4.摄影里,通过黑白照片体现“型体”与“线条”,“光线”。 2>图像的几何空间变化: 图像平移是将图像进行上下左右的等比例变化,不改变图像的特征,只改变位置。 图像比例缩放是指将给定的图像在x轴方向按比例缩放fx倍,在y轴按比例缩放fy倍,从而获得一幅新的图像。如果fx=fy,即在x轴方向和y轴方向缩放的比率相同,称这样的比例缩放为图像的全比例缩放。如果fx≠fy,图像的比例缩放会改变原始图象的像素间的相对位置,产生几何畸变。 旋转。一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。

数字图像处理实验一 图像的灰度变换

数字图像处理实验报告 (一) 班级:测控1002 姓名:刘宇 学号:06102043

实验一图像的灰度变换 1. 实验任务 熟悉MATLAB软件开发环境,掌握读、写图像的基本方法。 理解图像灰度变换在图像增强的作用,掌握图像的灰度线性变换和非线性变换方法。 掌握绘制灰度直方图的方法,掌握灰度直方图的灰度变换及均衡化的方法。2. 实验环境及开发工具 Windws2000/XP MATLAB 7.x 3. 实验原理 灰度变换 灰度变换是图像增强的一种重要手段,它常用于改变图象的灰度范围及分布,是图象数字化及图象显示的重要工具。在实际应用中,为了突出图像中感兴趣的研究对象,常常要求局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理,即分段线性拉伸: 图1.1 不同的分段线性变换 其对应的数学表达式为:

直方图均衡化 灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频度,它是图像最基本的统计特征。依据定义,在离散形式下,用rk 代表离散灰度级,用pr(rk)代表pr(r),并且有下式成立: n n r P k k r = )( 1,,2,1,010-=≤≤l k r k 式中:nk 为图像中出现rk 级灰度的像素数,n 是图像像素总数,而nk/n 即为频数。 直方图均衡化处理是以累积分布函数变换法为基础的直方图修正法。假定变换函数为 ω ωd p r T s r r )()(0 ?== (a) Lena 图像 (b) Lena 图像的直方图 图1.2 Lena 图像及直方图 当灰度级是离散值时,可用频数近似代替概率值,即 1 ,,1,010)(-=≤≤= l k r n n r p k k k r

矿体投影图

矿体投影图 一般用正投影方法,将矿体边界线及其它有关内容,投影到某一理想平面上而构成的一类综合图件,称为矿体投影图。 按投影面的空间位置,常采用矿体纵投影图和水平投影图两种基本图件。较少采用将矿体边界线正投影到矿体平均倾斜平面上的投影方法编制的矿体倾斜平面投影图。 一般情况下,当矿床具有两个或多个矿体,为醒目起见常需按单个矿体分别编制矿体投影图。其作用和用途是表示矿体的整体分布轮廓和侧状方向,可看出对矿体的研究与控制程度,表明不同类别储量及不同类型或不同品级矿石的大致分布范围;开发勘探阶段还常用来表示采掘进度,是矿体勘探与开采工程布置的总体性图件;并常是开采块段法、地质块段法储量计算的基本图件。 采用何种投影方式编制图件,主要取决于矿体产状的陡缓。当矿体总体倾角较陡,大于45°时,一般常采用垂直投影面,作矿体纵投影图;当矿体倾角较缓小于45°,尤其是极缓倾斜、近于水平的矿体,则多作矿体水平投影图。其比例尺视矿体规模和要求而定,一般为1∶500~1∶1000。 图上应表示的内容有 (1)坐标网(水平投影图)或坐标线与标高水平线(垂直投影图)。 (2)勘探线。探矿工程、样线及其编号[其中钻孔可表示出见矿深度或矿层底板标高或所截矿体(层)中点深度或标高]。 (3)矿体(层)厚度、平均品位、矿心采取率。

(4)火成岩体与围岩界限,破坏矿体(层)的主要构造线(带)。 (5)生产坑道(井)的位置及其采掘边界,废坑道(井)的位置和采空区(或可能的采空区)。 (6)储量计算边界线及与确定边界线有关的因素(如河流、铁路、大的厂房建筑区等)。 (7)不同矿石类型、品级与储量级别和矿体(层)氧化带、混合带、原生带的界线。 (8)矿段的界线及各块段的平均厚度、平均品位(包括主要元素与伴生元素)、面积(据储量计算方法而定)、体积、储量数字,以上内容可采用图示或列表。(9)在水平投影图上一般要画出矿层底板等高线。 (10)储量计算成果汇总表。 2.2 作图方法 矿体(层)垂直纵投影图的投影面是矿体(层)平均走向,即平行勘探基线方向的垂直理想面,如果矿体(层)延伸很长,勘探基线转折,应作分段展开投影,并标出转折点与分段基线方位。水平投影图是矿体(层)在理想水平面上的投影。当矿体(层)形态及产状发生很大变化时,应将矿体(层)在平面上的重叠或缺失部分用特殊的线条标出。比例尺原则上与勘探线剖面图或地质图一致。 当矿区具有两个以上矿体(层)或不同的矿体(层)时,应分别编制投影图。 矿体纵投影图与矿体水平投影图的作图方法基本相似:前者是先将勘探工程与揭露矿体的中心线交切点投影到一个平行矿体总体走向的沿垂平面上,再圈定矿体

数字信号图像处理-灰度直方图

(0.1) 灰度直方图不能表示出有某灰度级的像素在什么位置,也不能直接显示出图像内容,但是具有统计特征的直方图却能描述该图像的灰度分布特征,使人们从中得到诸如总体明亮程度、对比度、对象物的可分性等与图像质量有关的灰度分布概貌,成为一些处理方法的重要依据。 变换直方图使其达到较理想分布,能起到增强图像的效果。 面积为A 的连续图像f(x,y)经过数字化后,成为M 行N 列的数字图像f(m,n)。一般而言在数字图像f(x,y)中取不同灰度值的像素数目是不同的。直方图是用于表达图像灰度分布情况的统计图表。其横坐标是灰度值r ,纵坐标是出现这个灰度值的概率密度p(r)(对连续图像f(x,y)而言),或者出现这个灰度值的概率值p(r i )(对数字图像f(m,n))而言。 (1) 连续图像f(x,y)的直方图 0()()p()lim r A r r A r r r A →+-=? 且有max min ()1r r p r dr =? (2) 数字图像f(m,n)的情况下,设图像像素的灰度值为r 0,r 1,…,r L-1,则概率p(r i )为: (i=0,1,…,L -1)且有 尽管灰度直方图不能表示出有某灰度级的像素在什么位置,更不能直接显示图像内容,但是具有统计特性的直方图却能描述该图像的灰度分布特性,使人们从中得到诸如总体明亮程度、对比度、对象物的可分性等于图像质量有关的灰度分布概貌,成为一些处理方法的重要依据。 imhist(I,N)函数绘制直方图。其中N 表示长度,缺省值为256. Histeq(I,N)函数实现直方图均衡化,该命令对灰度图像I 进行变换,返回有N 级灰度的的图像J 。N 的缺省值为64(当N 小于I 中灰度级数时,J 的直方图更为平坦)。 PS: 直方图均衡化后,图像直方图趋于平坦化,且灰度间隔被拉大,从而有利于图像的分析和识别。(理论上说直方图均衡化就是通过变换函数将原图的直方图调整为平坦的直方图,然后用此均衡直方图校正图像。而实际上直方图均衡化修正后的图像直方图并不是十分均衡的,因为在操作过程中原直方图上频数较小的某些灰度级并入一个或几个灰度级中。) 1)连续图像,变换函数T(r)与原图像概率密度函数Pr(r)之间的关系为: S=T(r)= _/ ∑_( 2)离散图像,第i个灰度级ri出现的频数用ni表示,该灰度级像素对应的概率值为: Pr(ri) 0≤ri≤1 i=0,1,...,L-1 其中L是灰度级的数目,Pr(r)是第i级灰度的概率,ni是在图像中出现这种灰度级的次数,n是帧内像素总数。则离散函数的变换函数表达式:

数字图像处理源程序及详解之灰度直方图

图像的点运算 图像的点运算是图像处理中相对简单的技术,它主要用于改变一幅图像的灰度分布范围。点运算通过一个变换函数将图像的像素一 一转换,最终构成一幅新的图像。由于操作对象是图像的一个个像 素,故得名为“点运算”。点运算的最大特点是输出像素值只与当 前输入像素值有关。点运算的图像处理过程可以用以下公式表示: g(x, y)=T[f(x, y)] 其中f(x, y)表示输入图像,g(x, y)表示处理后的图像。函数T 是对f的一种变换操作,在这里它表示灰度变换公式。可以看到, 对于点运算而言,最重要的是确定灰度变换公式。变换公式一旦确 定,点运算对于图像的处理效果就确定了。 本章研究的主要内容包括灰度直方图、线性变换、非线性变换、阈值变换、灰度拉伸及灰度均衡等。若无特别说明,本章的点运算 函数所针对的待处理对象即为8位灰度图。 ■ 本章学习地图 ◆ 学会利用灰度直方图查看图像信息 ◆ 了解各种灰度变换公式 ◆ 掌握各种灰度变换的实现方法 ◆ 进一步了解各种点运算对于图像效果的影响 9.1 灰度直方图 本节介绍灰度直方图的相关概念和实现原理,它是提取图像信息的重要工具之一。 9.1.1 灰度直方图

任何一幅图像都包含着丰富的图像信息,对于图像处理而言,如何提取这些信息并找出其中的特征就显得十分关键。灰度直方图直观地显示了图像灰度分布的情况,这些信息在图像灰度变换等处理过程中显得十分重要。在本章随后的内容中,也会经常通过直方图来分析变换后的图像效果。 图9-1显示一幅灰度图及它所对应的灰度直方图。可以看到,灰度直方图是一个二维图。从数学上来说,它描绘了图像各灰度值的统计特性,显示了各个灰度级出现的次数或概率。从图形上来说,其横坐标表示图像的灰度值,取值范围是0到255。其纵坐标则通过高度来表示出现次数的多少或者概率的高低。在本章中,纵坐标表示像素出现的次数,最大值为该图像在0至 255阶灰度上分布像素出现次数的最大值。 图9-1 利用灰度直方图显示图像灰度分布 需要说明的是,如果没有特别指出,在本章后续内容中的所有变换都是基于图9-1中左侧的图像进行的。 接下来分析直方图的作用。图9-2所示的4幅图像都是根据同一幅图像进行基本灰度特征处理后获得的,分别是高亮度、低亮度、高对比度、低对比度4种类型的图像。每幅图像右侧都显示了对应的直方图。仔细观察可以发现如下特征。

绘制灰度图像直方图

图形图像处理课程设计 设计说明书 绘制灰度图像直方图 学生姓名 学号 班级 成绩 指导教师 计算机科学与技术系 2011年12月26日

图形图像处理课程设计评阅书 题目绘制灰度图像直方图 学生姓名学号 指导教师评语及成绩 成绩:教师签名:年月日答辩教师评语及成绩 成绩:教师签名:年月日教研室意见 总成绩:室主任签名:年月日注:指导教师成绩60%,答辩成绩40%,总成绩合成后按五级制记入。

课程设计任务书 2011 —2012 学年第一学期 专业:计算机科学与技术学号:姓名: 课程设计名称:图形图像处理 设计题目:绘制灰度图像直方图 完成期限:自2011 年12 月19日至2011 年12 月30 日共 2 周 设计依据、要求及主要内容(可另加附页): 图形图像处理课程设计是计算机科学与技术专业的实践性环节之一,是一门理论性和实践性都很强的,面向实际应用的课程。通过本课程的学习,学生应该掌握图形图像处理的基本原理和基本方法,并且掌握一门用于图形图像处理的编程语言,会编写图形图像处理的程序,从而获得开发图形图像处理系统的初步能力。 该课程要求学生运用图形图像处理的基本原理和基本方法,使用一门用于图形图像处理的编程语言,按要求事先一个具体的图形图像处理题目。 设计要求: 选定题目后,按照软件工程思想进行设计,完成以下主要内容: 需求分析,设计与编码,测试 主要内容: 开发工具使用Matlab6.0,完成一个小型应用系统的设计开发。 对一幅灰度图像进行直方图统计,并在屏幕上绘制出该直方图。 指导教师(签字):教研室主任(签字): 批准日期:年月日

摘要 数字图像处理技术是20世纪60年代发展起来的一门新兴学科,随着图像处理理论和方法的进一步完善,使得数字图像处理技术在各个领域得到了广泛应用,并显示出广阔的应用前景。MA TLAB 既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。图像直方图是图像处理中一种十分重要的图像分析工具,它描述了一幅图像的灰度级内容,任何一幅图像的直方图都包含了丰富的信息,它主要用在图像分割,图像灰度变换等处理过程中。 关键词:图像处理;MATLAB;直方图

灰度图像的直方图均匀化

数字图像处理实验报告 专业: 姓名: 学号:

灰度图像的直方图均匀化 1、实验任务 ⑴ 进一步掌握灰度图象直方图的概念,性质; ⑵ 对一幅灰度图象实现直方图均衡化,对比修正前后的图像效果 ⑶ 通过Matlab 或VC++开发环境,编程实现灰度图象的直方图均匀化处 理。 2、实验条件 微机一台、vc++6.0集成开发环境。 3、 实验原理 直方图均衡也称灰度均衡,目的是通过点运算使输入图像转换为在每一灰度级上都有相同的像素点数的输出图像(即输出的直方图是平的)。 按照图像的概率密度函数的定义: 00()A D MAX B A i i D D f D H A ===∑01()()p x H x A = 其中()H x 为直方图,0A 为图像的面积。 设转换前图像的概率密度函数为 ()r p r ,转换后图像的概率密度函数为()s p s ,转换函数为()s f r =。由概率论知识,我们可以得到: ()()s r dr p s p r ds = 这样,如果想使转换后的图像的概率密度函数为1(即直方图为平的),则必须满足: ()r ds p r dr = 等式两边对r 积分,可得: 0001()()()r r r s f r P u du H u du A ===?? 该转换公式被称为图像的累积分布函数。 直方图均衡的转换公式为:

00()()A D MAX B A D D f D H u du A ==? 对于离散图像,转换公式则为: 00()A D MAX B A i i D D f D H A ===∑ 4、实验步骤 ⑴ 实现灰度图像读取、保存模块; ⑵ 编程实现图像的直方图均衡。 5、程序 I=imread('F:\couple.bmp'); J=histeq(I); figure(1); subplot(1,2,1); imshow(I); title('原始图像') subplot(1,2,2); imshow(J); title('直方图均衡后'); figure(2); subplot(1,2,1); imhist(I); title('原始图像的直方图') subplot(1,2,2); imhist(J); title('均衡化后的直方图') 6、实验结果 实验采用大小为256×256的灰度图像couple.bmp 。原始图像和直方图均匀化处理后的图像如图所示。

四、灰度直方图是数字图像处理的重要工作。请简述灰度直方图规定化

其中,n 表示图像中像素的总数, n k 是在图像中出现这种灰度级的次数, L 表示灰度级 四、灰度直方图是数字图像处理的重要工作。 请简述灰度直方图规定化、 均衡化的基本 原理。并以分辨率为 5*4,图像的深度6bit 的图像为例,自举例说明直方图均衡化的计算过 程。 解答: 数字图像的直方图是作为图像每一个灰度级的统计概率分布 ”它提供了图像灰度分布的 概貌,直方图增强技术正是利用修改给定图像直方图的方法来增强图像的 ,最后得到的图像 增强程度取决于我们所采用的直方图。令变量 r 和S 分别代表图像增强前后的像素灰度级, 相应灰度级分布的概率密度分别为 P (r)和P S (s) o 为讨论方便,假设像素灰度值已经归一化在区间 [0,1],在灰度级坐标中r=0表示黑, r=1表示白。对区间[0,1]内任一个r 值按变换函数:S = T(r) ( 1) 进行变换,T (r )满足两个条件:(1)单值单调递增函数;(2) 0 < T (r )< 1。 条件(1)使灰度级保持从黑到白的次序,条件( 2)保证映射变换后像素灰度值在允许 的范围内。从S 到r 的反变换为:r =T/(S ) , 0< s w 1 o 和(2)o 由概率理论知,若P (r)和变换函数s = T(r) dr P s (S )=[ P r (r) ]r?s) ds 直方图增强技术就是通过变换函数 的外貌。 对于连续图像,变换函数为: r s=T(r) = 0 P(r)dr,0

直方图图像处理实验报告

实验一 直方图处理 实验目的 理解图像直方图的概念,掌握图像直方图的绘制方法 掌握直方图均衡化的原理,并会用直方图均衡化对图像进行处理。 实验要求 1.读入图像,可使用imread 。 2.输出图像,可使用imshow 。 3.绘制图像的归一化的直方图,可使用IPT 函数imhist 。 4.对图像进行直方图均衡化,可使用IPT 函数histeq ,对均衡化前后的图像以及直方图进行对比。 实验原理 一幅数字图像在范围[0, G ]内共有L 个灰度等级,其直方图定义为离散函数 k k n r h =)( 其中r k 是区间[0, G ]内的第k 级亮度,n k 是灰度级为r k 的图像中的像素数。 通常,我们会用到归一化直方图,即使所用所有元素h (r k )除以图像中的像素总数n 所得到的图形: n n n r h r p k k k ==)()( 其中k =1,2,…,L 。 Matlab 中提供了IPT 函数imhist 来绘制图像的直方图,但是除此之外绘制直方图的方法还有很多,可以通过条形图、杆状图等方式来表示直方图。 直方图均衡化主要用于增强动态范围偏小的图像的反差。该方法的基本思想是把原始的直方图变换为均匀分布的形状,这样就增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。 直方图均衡化一般采用原始图的累计分布函数作为变换函数。假设灰度级归一化至范围 [0, 1]内,p r (r )表示给定图像中的灰度级的概率密度函数,对于离散的灰度级,均衡化变换为: ∑∑=====k j j k j j r k k n n r p r T s 11)()( 式中k =1,2,…,L ,s k 是输出图像中的亮度值,它对应于出入图像中的亮度值r k 。 实验心得: 1. matlab 的函数的功能很强大,一个简单的函数调用就可以解决复杂的问题。这样,就需要在函数调用时注意函数的参数,否则很容易出错。比如函数 histeq(a,n),就要注意其中的n 为灰度值的个数。 2. 对于自己编写函数实现某些特定的功能时,需要对原理掌握清楚,如实验二中需自己编写函数实现图像的均衡,就要求对直方图的均衡原理掌握到位。 3. 使用读图像函数imread()时需注意该程序的物理路径和函数参数,即图像的物理路径需

垂直投影图(纵投影图)的编绘方法

垂直投影图(纵投影图)的编绘方法 垂直投影图(纵投影图)的编绘方法 1.投影面方位,一般与矿体的平均走向线平行,即应垂直于矿体的勘探线。两者不 一致时,以后者为主。 2.投影图的基本线条为标高线与勘探线,标高线应与勘探线剖面图上的标高线一致。 当投影图方位与勘探线方向正交时,勘探线在图上为铅垂线,其在图上的间距,即为勘探 线的实际间距。当勘探线方向不与投影图正交时,应根据不同情况,分别按下述方法处理: (1)当一组正交于投影图方位的勘探线中夹有一条斜交于投影图方位的勘探线时,该勘 探线与矿体投影基准面的交切线在投影图上的迹线,是一条斜线,甚至斜曲线(当矿体投影 基准面的倾斜自地表至深部有变化时,为斜曲线)。矿体倾斜愈缓,该斜线的斜度愈大。一 般可以用下列方法之一得出: ①依下列公式计算出偏斜勘探线在垂直投影图上的倾伏角(即在投影图上,偏斜勘探线 与水平标高线之间的夹角)x : tgθ 式中: β——偏斜勘探线与垂直于投影面之勘探线之间的夹角; θ——矿脉垂直于投影面的平均倾角。 根据 X ,在投影图上,通过偏斜勘探线与矿体投影基准面的地表交点,画成斜线。 ②用作图法:即在地表及不同水平剖面上,求得矿体投影基准面与该偏斜勘探线及其 相邻勘探线的交点,如图Ⅶ一 25.图中Ⅱ、Ⅳ为正交于投影面的勘探线,Ⅲ为偏斜勘探线, A 、C 、B 为在 2500 米水平上矿体投影基准面分别与Ⅱ,Ⅲ,Ⅳ勘探线的交点,A ′CB ′ 为平行矿体平均走向方向线,CA ′为 C 点至Ⅱ勘探线的垂直距离,自水平剖面上求得 C 点,依 CA ′落 C 点于垂直投影图的 2500 米水平,其他水平类推,即得Ⅲ勘探线的投影迹 线。一般情形下,只按矿体平均倾斜作一个水平剖面图,取得该水平面上的交点 C ,连结 地表及该交点而取一直线,不必联成折线或曲线。 应注意几个问题: tgβ X=90°- ar ctg (7-16)

实验2_灰度修正技术1

实验2 灰度修正技术 一、 实验目的: 1. 掌握灰度变换 2. 深入理解图像直方图的概念,掌握图像直方图的绘制方法 3. 掌握直方图均衡化的原理,并会用直方图均衡化对图像进行处理 二、 实验原理 2.1灰度修正技术 包括直接灰度变换和直方图修正,其目的是增强图像的对比度,使图像更加清晰。 1.灰度变换 灰度变换是一种最简单的图像增强技术,它属于点操作,这种变换方法有多种,如线性变换、对数变换、幂次变换等。 (1) 线性变换 所谓线性变换是指:输出图像灰度值g 和输入图像灰度值f 之间的函数关 系是线性关系。由图2-1(a)所示的线性变换可知,输出图像灰度值g 的表达式可以写成 M m f M m f m n M N g +-=+---=)()(α (2-1) 若α > 1,则输出图像对应的灰度范围扩大,对比度增强;若0 < α < 1,则输出图像对应的灰度范围压缩,对比度减小;若α < 0,则图像灰度值求反(见图2-1(b)),使白变黑,使黑变白。 (a) (b) 图2-1 灰度线性变换 (a)线性变换;(b)求反. (2) 对数变换 设输入图像灰度值为非负值,即0≥f ,则对数变换的数学表达式为 )1log(f c g += (2-2) 式中c 是一个可以调整的常数。当1=c 时,对数变换曲线如图2-2所示。由图可以看出,窄范围的低灰度输入图像值映射为一宽范围输出值,而宽范围的高灰度

值映射为一窄范围的输出值,即暗像素的灰度值范围被扩大,而亮像素的灰度值范围被压缩,这就使低灰度区域的图像细节能够获得清晰的显示。 对数变换能有效地压缩图像的动态范围,其典型应用是图像Fourier频谱的显示。Fourier幅度谱的动态范围很大,其数值在0至106数量级范围内变化,而普通显示器的动态范围只有8比特,如果不经对数变换而直接显示,则低数值的细节就无法显示出来。 图2-2 对数变换 (3)幂次变换 幂次变换的数学表达式可以写成 γ =(2-3) g? c f 式中γ,c均是正的常数。对于不同的γ值,幂次变换曲线如图2-3所示,图中所 γ时,幂次变换将扩大暗像素的有曲线均对应于1 = c的情况。由图可见,当1 < γ 灰度值范围,压缩亮像素的灰度值范围,这类似于对数变换;与此相反,当1 > γ时,时,幂次变换将压缩暗像素的灰度值范围,扩大亮像素的灰度值范围;当1 = 幂次变换简化为线性变换。

相关主题