摄像头编程并且对图像的处理以及直方图的算法

摄像头编程并且对图像的处理以及直方图的算法
摄像头编程并且对图像的处理以及直方图的算法

题目:图像的基本处理班级:2011级软件2班姓名:刘磊磊

时间:20130907

摘要:随着数字化与多媒体时代的来临,数字图像处理已经成为必备的基础知识。全国各大专院校的计算机、电子、通信、医学、光学及许多相关专业都开设了与数字图像预处理相关的课程。数字图像二值化是图像预处理中的一项重要技术,其在模式识别、光学字符识别、医学成像等方面都有着重要应用。本论文主要为大家介绍24位真彩图像的灰度、二值处理以及图像的一些简单的打开和保存和如何画直方图,还有一些通过这次小学期学到的一些知识。

关键字:灰度处理,二值化

图像的打开

void CText1Dlg::ShowPic()

{

if(m_path =="") //判断图片路径是否存在

{

return;

}

hwnd = GetDlgItem(IDC_pic);

hDesDC = hwnd->GetDC()->m_hDC;

hSrcDC = CreateCompatibleDC(hDesDC);

hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),m_path,IMAGE_BITMAP,0,0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);

GetObject(hBitmap, sizeof(BITMAP), &bm);

SelectObject(hSrcDC, hBitmap);

hwnd->GetClientRect(&rect);

::SetStretchBltMode(hDesDC,COLORONCOLOR);

::StretchBlt(hDesDC, rect.left, rect.top, rect.right, rect.bottom, hSrcDC,

0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY);

UpdateData(false);

}

void CText1Dlg::Onopenpicture() //打开图像

{

// TODO: Add your control notification handler code here

inum = 1;

CFileDialog dlg(TRUE,"bmp",".bmp",OFN_HIDEREADONL Y,"BMP Files(*.jpg)|*.bmp||");//设置所能打开图像的格式

// CFileDialog dlg(TRUE,"jpg",".jpg",OFN_HIDEREADONL Y,"JPG Files(*.bmp)|*.jpg||");这是jpg图像的打开方式

if(dlg.DoModal() != IDOK) // dlg_jpg.DoModal()

{

return;

}

m_path = dlg.GetPathName(); //获得图片路径

UpdateData(false); //更新路径公共变量

ShowPic(); //调用显示图片函数

}

图像的保存

我的方法是先选择需要保存的图片并且这张图片是已经命名的,然后选择路径,最后用CopyFile(“原始图像全名包括扩展名”,“保存的全名包括路径+新的命名+扩展名”,false)就OK了。下面是代码:

void CForm::Onsaveroud()

{

// TODO: Add your control notification handler code here

CString strFolderPath="";

TCHAR szPath[_MAX_PA TH];

BROWSEINFO bi;

bi.hwndOwner = GetSafeHwnd();

bi.pidlRoot = NULL;

bi.lpszTitle = _T("选择文件夹");

bi.pszDisplayName = szPath;

bi.ulFlags = BIF_RETURNONL YFSDIRS;

bi.lpfn = NULL;

bi.lParam = NULL;

LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi);

if(pItemIDList)

{

if(SHGetPathFromIDList(pItemIDList,szPath))

{

strFolderPath = szPath;

}

// 防止内存泄露,要使用IMalloc接口

IMalloc* pMalloc;

if( SHGetMalloc(&pMalloc) != NOERROR )

{

TRACE(_T("无法取得外壳程序的IMalloc接口\n"));

}

pMalloc->Free(pItemIDList);

if(pMalloc)

pMalloc->Release();

}

ScanDiskFile(strFolderPath);

}

void CForm::ScanDiskFile(CString& strPath)

{

CFileFind find;

CString strTemp = strPath;

CString strDirectory = strPath + _T("\\") + _T("\\*.*");

CString strFile;

BOOL IsFind = find.FindFile(strDirectory);

IsFind=find.FindNextFile();

// 如果是"." 则不扫描

if(find.IsDots())

{}

// 如果是是目录,继续扫描此目录

else

if(find.IsDirectory())

{

strFile = find.GetFileName();

strTemp = strTemp ;//+ _T("\\") + strFile;

//ScanDiskFile(strTemp);

}

m_path=strTemp;//m_path就是所要保存图片的路径

UpdateData(false);

find.Close();

}

彩色图像的灰度处理:

图像灰度处理就是把各个像素点的R,G,B值设置为同一个值,当然要根据图像来取值。

void CText1Dlg::Oncolortogray() //彩色转换灰度

{

// TODO: Add your control notification handler code here

// m_dwOperation = IMAGE_Text1_color_grayed_out;

UpdateData();

CString str;

if(inum == 1)//判别是否是从其他路径读取

{

m_sourcefile = m_path;//m_sourcefile 是所要处理的彩色图片的路径及全名

m_targetfile = m_path+"gray.bmp";//m_targetfile是处理过的图片的路径及全名

str = m_targetfile;

}

m_sourcefile = CStimes;

m_targetfile = "gray.bmp";

str = m_targetfile;

if(m_sourcefile == "" || m_targetfile == "")

return;

FILE *sourcefile,*targetfile;

//位图文件头和信息头

BITMAPFILEHEADER sourcefileheader,targetfileheader;

BITMAPINFOHEADER sourceinfoheader,targetinfoheader;

memset(&targetfileheader,0,sizeof(BITMAPFILEHEADER));

memset(&targetinfoheader,0,sizeof(BITMAPINFOHEADER));

sourcefile=fopen(m_sourcefile,"rb");

fread((void*)&sourcefileheader,1,sizeof(BITMAPFILEHEADER),sourcefile);//提取原图文件头

if(sourcefileheader.bfType!=0x4d42)

{

fclose(sourcefile);

MessageBox("原图象不为BMP图象!");

return;

}

fread((void*)&sourceinfoheader,1,sizeof(BITMAPINFOHEADER),sourcefile);//提取文件信息头

if(sourceinfoheader.biBitCount!=24)

{

fclose(sourcefile);

MessageBox("原图象不为24位真彩色!");

return;

}

if(sourceinfoheader.biCompression!=BI_RGB)

{

fclose(sourcefile);

MessageBox("原图象为压缩后的图象,本程序不处理压缩过的图象!");

return;

}

//构造灰度图的文件头

targetfileheader.bfOffBits=54+sizeof(RGBQUAD)*256;

targetfileheader.bfSize=targetfileheader.bfOffBits+sourceinfoheader.biSizeImage/3;

targetfileheader.bfReserved1=0;

targetfileheader.bfReserved2=0;

targetfileheader.bfType=0x4d42;

//构造灰度图的信息头,这些都是固定值

targetinfoheader.biBitCount=8;

targetinfoheader.biSize=40;

targetinfoheader.biHeight=sourceinfoheader.biHeight;

targetinfoheader.biWidth=sourceinfoheader.biWidth;

targetinfoheader.biPlanes=1;

targetinfoheader.biCompression=BI_RGB;

targetinfoheader.biSizeImage=sourceinfoheader.biSizeImage/3;

targetinfoheader.biXPelsPerMeter=sourceinfoheader.biXPelsPerMeter;

targetinfoheader.biYPelsPerMeter=sourceinfoheader.biYPelsPerMeter;

targetinfoheader.biClrImportant=0;

targetinfoheader.biClrUsed=256;

//构造灰度图的调色版

RGBQUAD rgbquad[256];

// color=(RGBMixPlate *)malloc(sizeof(RGBMixPlate)*256);

// index=(BYTE *)malloc(sizeof(BYTE)*infohead.readSize);

int i,j,m,n,k;

for(i=0;i<256;i++)

{

rgbquad[i].rgbBlue=i;

rgbquad[i].rgbGreen=i;

rgbquad[i].rgbRed=i;

rgbquad[i].rgbReserved=0;

}

targetfile=fopen(m_targetfile,"wb");

//写入灰度图的文件头,信息头和调色板信息

fwrite((void*)&targetfileheader,1,sizeof(BITMAPFILEHEADER),targetfile);

fwrite((void*)&targetinfoheader,1,sizeof(BITMAPINFOHEADER),targetfile);

fwrite((void*)&rgbquad,1,sizeof(RGBQUAD)*256,targetfile);

BYTE* sourcebuf;

BYTE* targetbuf;

//这里是因为BMP规定保存时长度和宽度必须是4的整数倍,如果不是则要补足

m=(targetinfoheader.biWidth/4)*4;

if(m

m=m+4;

n=(targetinfoheader.biHeight/4)*4;

if(n

n=n+4;

sourcebuf=(BYTE*)malloc(m*n*3);

//读取原图的颜色矩阵信息

fread(sourcebuf,1,m*n*3,sourcefile);

fclose(sourcefile);

targetbuf=(BYTE*)malloc(m*n);

BYTE BYcolor[3];

// 通过原图颜色矩阵信息得到灰度图的矩阵信息

for(i=0;i

{

for(j=0;j

{

for(k=0; k<3; k++)

BYcolor[k]=sourcebuf[(i*m+j)*3+k];

targetbuf[(i*m)+j]=BYcolor[0]*0.114+BYcolor[1]*0.587+BYcolor[2]*0.299;

if(targetbuf[(i*m)+j]>255)

targetbuf[(i*m)+j]=255;

}

}

fwrite((void*)targetbuf,1,m*n+1,targetfile);

fwrite(&targetinfoheader,1,12,targetfile);

fwrite(&targetinfoheader,1,40,targetfile);

fclose(targetfile);

////////////////////////////////////////////////////

preview(IDC_pic,str);//灰度预览

}

void CText1Dlg::preview(int control, CString CStimes)//预览图片

{//conture是所要显示图片的picture控件的ID,CStimes是所要预览的图片的全名(包括扩展名)

CString filepath;

filepath = CStimes;

IStream* stream;

IPicture* picture;

OLE_XSIZE_HIMETRIC m_width;

OLE_YSIZE_HIMETRIC m_height;

HGLOBAL hmem;

CFile file;

file.Open(filepath,CFile::modeReadWrite);

DWORD len=file.GetLength();

hmem=GlobalAlloc(GMEM_MOVEABLE,len);

LPVOID pData=NULL;

pData=GlobalLock(hmem);

file.ReadHuge(pData,len);

file.Close();

GlobalUnlock(hmem);

CreateStreamOnHGlobal(hmem,TRUE,&stream);

OleLoadPicture(stream,len,TRUE,IID_IPicture,(LPVOID*)&picture);

picture->get_Height(&m_height);

picture->get_Width(&m_width);

int width=(int)(240);

int height=(int)(225);

// int width=(int)(m_width/26.45);

// int height=(int)(m_height/26.45);

CRect rect1,rect2;

GetClientRect(rect1);

GetWindowRect(rect2);

int x,y;

x=rect1.Width()>(width+10)?0:(width+10-rect1.Width());

y=rect1.Height()>(height+10)?0:(height+10-rect1.Height());

rect2.InflateRect(x/2,y/2);

MoveWindow(rect2);

CenterWindow();

//CDC* pDC=GetDC();

CWnd *pi=GetDlgItem(control);//---注意:GetDlgItem是Cwnd类中函数,在此格式是继承;

CDC *dc=pi->GetDC(); //

picture->Render(dc->m_hDC,0,0,width,height,0,m_height,m_width,-m_height,NULL);

pi->ReleaseDC(dc);////

}

彩色图像的二值化:

图像的二值化就是将图像上的每个像素点的灰度值设置为0或255,也就是将整个图变为明显的黑白效果。

将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。所有灰度大于或者等于阀值的像素被判定为属于特定物体,其灰度值为255,否则这些像素点被排除在物体区域外,灰度值为0,拜师背景或者例外的物体区域。下面是代码:

void CText1Dlg::Onwhiteandblack() //彩色图片二值化

{

// TODO: Add your control notification handler code here

UpdateData();

if(inum == 1)

{

m_sourcefile = CStimes;//m_sourcefile 是所要处理的彩色图片的路径及全名

m_targetfile = "white.bmp";//m_targetfile是处理过的图片的路径及全名

}

m_sourcefile = CStimes;

m_targetfile = "white.bmp";

if(m_sourcefile == "" || m_targetfile == "")

return;

FILE *sourcefile,*targetfile;

//位图文件头和信息头

BITMAPFILEHEADER sourcefileheader,targetfileheader;

BITMAPINFOHEADER sourceinfoheader,targetinfoheader;

memset(&targetfileheader,0,sizeof(BITMAPFILEHEADER));

memset(&targetinfoheader,0,sizeof(BITMAPINFOHEADER));

sourcefile=fopen(m_sourcefile,"rb");

fread((void*)&sourcefileheader,1,sizeof(BITMAPFILEHEADER),sourcefile);//提取原图文件头

if(sourcefileheader.bfType!=0x4d42)

{

fclose(sourcefile);

MessageBox("原图象不为BMP图象!");

return;

}

fread((void*)&sourceinfoheader,1,sizeof(BITMAPINFOHEADER),sourcefile);//提取文件信息头

if(sourceinfoheader.biBitCount!=24)

{

fclose(sourcefile);

MessageBox("原图象不为24位真彩色!");

return;

}

if(sourceinfoheader.biCompression!=BI_RGB)

{

fclose(sourcefile);

MessageBox("原图象为压缩后的图象,本程序不处理压缩过的图象!");

return;

}

//构造灰度图的文件头

targetfileheader.bfOffBits=54+sizeof(RGBQUAD)*256;

targetfileheader.bfSize=targetfileheader.bfOffBits+sourceinfoheader.biSizeImage/3;

targetfileheader.bfReserved1=0;

targetfileheader.bfReserved2=0;

targetfileheader.bfType=0x4d42;

//构造灰度图的信息头

targetinfoheader.biBitCount=8;

targetinfoheader.biSize=40;

targetinfoheader.biHeight=sourceinfoheader.biHeight;

targetinfoheader.biWidth=sourceinfoheader.biWidth;

targetinfoheader.biPlanes=1;

targetinfoheader.biCompression=BI_RGB;

targetinfoheader.biSizeImage=sourceinfoheader.biSizeImage/3;

targetinfoheader.biXPelsPerMeter=sourceinfoheader.biXPelsPerMeter;

targetinfoheader.biYPelsPerMeter=sourceinfoheader.biYPelsPerMeter;

targetinfoheader.biClrImportant=0;

targetinfoheader.biClrUsed=256;

//构造灰度图的调色版

RGBQUAD rgbquad[256];

// color=(RGBMixPlate *)malloc(sizeof(RGBMixPlate)*256);

// index=(BYTE *)malloc(sizeof(BYTE)*infohead.readSize);

int i,j,m,n,k;

for(i=0;i<256;i++)

{

rgbquad[i].rgbBlue=i;

rgbquad[i].rgbGreen=i;

rgbquad[i].rgbRed=i;

rgbquad[i].rgbReserved=0;

}

targetfile=fopen(m_targetfile,"wb");

//写入灰度图的文件头,信息头和调色板信息

fwrite((void*)&targetfileheader,1,sizeof(BITMAPFILEHEADER),targetfile);

fwrite((void*)&targetinfoheader,1,sizeof(BITMAPINFOHEADER),targetfile);

fwrite((void*)&rgbquad,1,sizeof(RGBQUAD)*256,targetfile);

BYTE* sourcebuf;

BYTE* targetbuf;

//这里是因为BMP规定保存时长度和宽度必须是4的整数倍,如果不是则要补足m=(targetinfoheader.biWidth/4)*4;

if(m

m=m+4;

n=(targetinfoheader.biHeight/4)*4;

if(n

n=n+4;

sourcebuf=(BYTE*)malloc(m*n*3);

//读取原图的颜色矩阵信息

fread(sourcebuf,1,m*n*3,sourcefile);

fclose(sourcefile);

targetbuf=(BYTE*)malloc(m*n);

BYTE BYcolor[3];

// 通过原图颜色矩阵信息得到灰度图的矩阵信息

for(i=0;i

{

for(j=0;j

{

for(k=0; k<3; k++)

BYcolor[k]=sourcebuf[(i*m+j)*3+k];

targetbuf[(i*m)+j]=BYcolor[0]*0.114+BYcolor[1]*0.587+BYcolor[2]*0.299;

if(targetbuf[(i*m)+j]>255)

targetbuf[(i*m)+j]=255;

if( targetbuf[(i*m)+j]>100)///阀值m_scrollbar.GetScrollPos()

targetbuf[(i*m)+j] = 255;

else

targetbuf[(i*m)+j] = 0;

}

}

fwrite((void*)targetbuf,1,m*n+1,targetfile);

fclose(targetfile);

preview(IDC_pic,"white.bmp");//二值预览

}

直方图:

直方图(Histogram)又称柱状图、质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型,纵轴表示分布情况。下面介绍直方图的简单绘制代码。

void CHistogram::OnRed()

{

// TODO: Add your control notification handler code here

GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);

GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC4)->ShowWindow(SW_HIDE);

GetDlgItem(IDC_STATIC5)->ShowWindow(SW_HIDE);

}//我在对话框上添加了5个piture框架类控件,ID分别是GetDlgItem()里面的。我只写一个,其他的差不多,改一下所要显示的控件ID就成了。

void CHistogram:: coordinate_axis()//画坐标轴

{

CWnd *pi=GetDlgItem(IDC_STATIC6);//---注意:GetDlgItem是Cwnd类中函数,在此格式是继承;

CDC *dc=pi->GetDC();

dc->MoveTo(0,255);

dc->LineTo(0,0);//画纵轴

dc->MoveTo(0,0);

dc->LineTo(5,5);

dc->MoveTo(0,0);

dc->LineTo(-5,5);///纵轴箭头

dc->MoveTo(0,255);

dc->LineTo(270,255);//横轴

dc->MoveTo(270,255);

dc->LineTo(265,250);

dc->MoveTo(270,255);

dc->LineTo(265,260);//横轴箭头

int i,j;

for(i=11;i<255;)

{

dc->MoveTo(i,255);

dc->LineTo(i,258);

i+=10;

}//设置横轴步长,10

dc->MoveTo(256,255);

dc->LineTo(256,258);

for(i=245;i>0;)

{

dc->MoveTo(0,i);

dc->LineTo(-3,i);

i-=10;

}//设置纵轴步长

pi->ReleaseDC(dc);

}

void CHistogram::red()//红色直方图

{

CWnd *pi=GetDlgItem(IDC_STATIC1);//---注意:GetDlgItem是Cwnd类中函数,在此格式是继承;

CDC *dc=pi->GetDC();

CPen MyPen,*OldPen;

MyPen.CreatePen(PS_SOLID,1,RGB(0,0,0));

OldPen=dc->SelectObject(&MyPen);

int i,j;

for(i=0,j=1;i<=255;)

{

dc->MoveTo(j,255);

dc->LineTo(j,255-a[i]/m_scrollbar.GetScrollPos());//

j++;

i++;

}

pi->ReleaseDC(dc);

dc->SelectObject(OldPen);

MyPen.DeleteObject();

}

void CHistogram::green()//绿色

{

CWnd *pi=GetDlgItem(IDC_STATIC2);//---注意:GetDlgItem是Cwnd类中函数,在此格式是继承;

CDC *dc=pi->GetDC();

int i,j;

CPen MyPen,*OldPen;

MyPen.CreatePen(PS_SOLID,1,RGB(0,0,0));

OldPen=dc->SelectObject(&MyPen);

for(i=0,j=1;i<=255;)

{

dc->MoveTo(j,255);

dc->LineTo(j,255-b[i]/m_scrollbar.GetScrollPos());

j++;

i++;

}

//}

//dc->MoveTo(0,0);

//dc->LineTo(255,255);

pi->ReleaseDC(dc);

dc->SelectObject(OldPen);

MyPen.DeleteObject();

}

void CHistogram::blue()

{

CWnd *pi=GetDlgItem(IDC_STATIC3);//---注意:GetDlgItem是Cwnd类中函数,在此格式是继承;

CDC *dc=pi->GetDC();

int i,j;

CPen MyPen,*OldPen;

MyPen.CreatePen(PS_SOLID,1,RGB(0,0,0));

OldPen=dc->SelectObject(&MyPen);

for(i=0,j=1;i<=255;)

{

dc->MoveTo(j,255);

dc->LineTo(j,255-c[i]/m_scrollbar.GetScrollPos());

j++;

i++;

}

pi->ReleaseDC(dc);

dc->SelectObject(OldPen);

MyPen.DeleteObject();

}

接着添加响应函数OnPaint();

void CHistogram::OnPaint() //调用各个函数就成了

{

CPaintDC dc(this); // device context for painting

zuobiaozhou();

if(k==1)

red();

if(k==2)

green();

if(k==3)

blue();

if(k==4)

gray();

if(k==5)

erzhi();

// Do not call CDialog::OnPaint() for painting messages

}

结论:图像预处理是数字图像处理的前期工作,目前被应用于各个方面。通过数字图像

处理来处理图像,达到便于人或机械识别。所以我们应该更加努力的掌握好图像处理的知识。

数字图像处理实验四

数字图像处理 实验 实验四:图像增强—直方图变换学院:信息工程学院 姓名: 学号: 专业及班级: 指导教师:

一、实验目的 1.掌握灰度直方图的概念及其计算方法; 2.熟练掌握直力图均衡化和直方图规定化的计算过程; 3.熟练掌握空域滤波中常用的平滑和锐化滤波器; 4.掌握色彩直方图的概念和计算方法; 5.利用MATLAB程序进行图像增强。 二、实验内容 图像增强是指按特定的需要突出一幅图像中的某些信息,同时,消弱或去除某些不需要的信息的处理方法。其主要目的是处理后的图像对某些特定的应用比原来的图像更加有效。图像增强技术主要有直方图修改处理、图像平滑化处理、图像尖锐化处理和彩色处理技术等。本实验以直方图均衡化增强图像对比度的方法为主要内容,其他方法同学们可以在课后自行联系。 直方图是多种空间城处理技术的基础。直方图操作能有效地用于图像增强。除了提供有用的图像统计资料外,直方图固有的信息在其他图像处理应用中也是非常有用的,如图像压缩与分割。直方图在软件中易于计算,也适用于商用硬件设备,因此,它们成为了实时图像处理的一个流行工具。 直方图是图像的最基本的统计特征,它反映的是图像的灰度值的分布情况。直方图均衡化的目的是使图像在整个灰度值动态变化范围内的分布均匀化,改善图像的亮度分布状态,增强图像的视觉效果。灰度直方图是图像预处理中涉及最广泛的基本概念之一。 图像的直方图事实上就是图像的亮度分布的概率密度函数,是一幅图像的所有象素集合的最基本的统计规律。直方图反映了图像的明暗分布规律,可以通过图像变换进行直方图调整,获得较好的视觉效果。 直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。 三、实验具体实现 显示原图像的直方图和经过均衡化处理过的图像直方图: I=imread('1.jpg'); % 读入原图像 J=histeq(I); %对原图像进行直方图均衡化处理 subplot(2,2,1) ;imshow(I); %显示原图像 title('原图像'); %给原图像加标题名 %对原图像进行屏幕控制;显示直方图均衡化后的图像 subplot(2,2,2) ;imshow(J); %给直方图均衡化后的图像加标题名 title('直方图均衡化后的图像') ; %对直方图均衡化后图像进行屏幕控制;作一幅子图,并排两幅图的第1幅 subplot(2,2,3) ; imhist(I,64); %将原图像直方图显示为64级灰度 title('原图像直方图') ; %给原图像直方图加标题名

图像分割算法开题报告

图像分割算法开题报告 摘要:图像分割是图像处理中的一项关键技术,自20世纪70年代起一直受到人们的高度重视,并在医学、工业、军事等领域得到了广泛应用。近年来具有代表性的图像分割方法有:基于区域的分割、基于边缘的分割和基于特定理论的分割方法等。本文主要对基于自动阈值选择思想的迭代法、Otsu法、一维最大熵法、二维最大熵法、简单统计法进行研究,选取一系列运算出的阈值数据和对应的图像效果做一个分析性实验。 关键字:图像分割,阈值法,迭代法,Otsu法,最大熵值法 1 研究背景 1.1图像分割技术的机理 图像分割是将图像划分为若干互不相交的小区域的过程。小区域是某种意义下具有共同属性的像素连通集合,如物体所占的图像区域、天空区域、草地等。连通是指集合中任意两个点之间都存在着完全属于该集合的连通路径。对于离散图像而言,连通有4连通和8连通之分。图像分割有3种不同的方法,其一是将各像素划归到相应物体或区域的像素聚类方法,即区域法,其二是通过直接确定区域间的边界来实现分割的边界方法,其三是首先检测边缘像素,然后再将边缘像素连接起来构成边界的方法。 图像分割是图像理解的基础,而在理论上图像分割又依赖图像理解,两者是紧密关联的。图像分割在一般意义下十分困难的,目前的图像分割处于图像的前期处理阶段,主要针对分割对象的技术,是与问题相关的,如最常用到的利用阈值化处理进行的图像分割。 1.2数字图像分割技术存在的问题

虽然近年来对数字图像处理的研究成果越来越多,但由于图像分割本身所具有的难度,使研究没有大突破性的进展,仍然存在以下几个方面的问题。 现有的许多种算法都是针对不同的数字图像,没有一种普遍适用的分割算法。 缺乏通用的分割评价标准。对分割效果进行评判的标准尚不统一,如何对分割结果做出量化的评价是一个值得研究的问题,该量化测度应有助于视觉系统中的自动决策及评价算法的优劣,同时应考虑到均质性、对比度、紧致性、连续性、心理视觉感知等因素。 与人类视觉机理相脱节。随着对人类视觉机理的研究,人们逐渐认识到,已有方法大都与人类视觉机理相脱节,难以进行更精确的分割。寻找到具有较强的鲁棒性、实时性以及可并行性的分割方法必须充分利用人类视觉特性。 知识的利用问题。仅利用图像中表现出来的灰度和空间信息来对图像进行分割,往往会产生和人类的视觉分割不一致的情况。人类视觉分割中应用了许多图像以外的知识,在很多视觉任务中,人们往往对获得的图像已具有某种先验知识,这对于改善图像分割性能是非常重要的。试图寻找可以分割任何图像的算法目前是不现实,也是不可能的。人们的工作应放在那些实用的、特定图像分割算法的研究上,并且应充分利用某些特定图像的先验知识,力图在实际应用中达到和人类视觉分割更接近的水平。 1.3数字图像分割技术的发展趋势 从图像分割研究的历史来看,可以看到对图像分割的研究有以下几个明显的趋势。 对原有算法的不断改进。人们在大量的实验下,发现一些算法的效

图像处理基础知识点

图像处理基础知识点 1、Ps的作用:调色、修复图片、艺术创作等等 2、Ps的启动:开始>>所有程序>>ps 3、Ps的退出:关闭按钮、文件>>退出、ctrl+q 4、图像间的显示关系:窗口>>排列(层叠、水平平铺、垂直平铺、排列图标) 5、Ps:标题栏、菜单栏、属性栏、工具条(左侧可移、过去单列工具条,现在ps3单双列)、图像编辑窗口、面板组合窗口(右侧可移)、状态栏 6、1)位图图像:图像由一个一个带有颜色值的小点组成的。称这些小点为像素。图像由像素组成横向*纵向 2)矢量图像:不是由像素点组成的,例如:flash等等 7、新建文件: 1)快捷键——ctrl+n>>名称(保存的默认名称)、预设(可以将设置保存为日后使用:存储预设)、宽度(单位:像素(图像最小单位)、高度、分辨率(单位面积上像素的多少,像素越多图像越精细)、颜色模式、背景内容(背景颜色:白色、背景色、透明))>>确定2)文件>>新建 3)Ctrl并在空白处双击 8、打开文件: (资源管理器:我的电脑右键资源管理器寻找素材)1)将图像往PS中拖(可以拖动多张)2)文件>>打开 3)在空白位置双击4)ctrl+o 9、存储:文件>>存储ctrl+s 文件>>另存储为ctrl+shit+s 10、关闭图像文件:文件>>关闭Ctrl+w或ctrl+F4 窗口右上角的关闭按钮 窗口>>文档>>关闭全部:可关闭全部打开的图像 11、工具箱按Tab可以打开和关闭(右下角有黑三角证明为一个工具组):第一组:选择、移动、裁切等第二组:修复、绘画、模糊、加深、减淡等第三组:路径的设置、文字的操作等第四组:附注工具等 12、Alt+delete:用前景色填充Ctrl+delete:用背景色填充 13、Ctrl+d:取消选区选择>>取消选区右键>>取消选区

关于图像分割算法的研究

关于图像分割算法的研究 黄斌 (福州大学物理与信息工程学院 福州 350001) 摘要:图像分割是图像处理中的一个重要问题,也是一个经典难题。因此对于图像分割的研究在过去的四十多年里一直受到人们广泛的重视,也提山了数以千计的不同算法。虽然这些算法大都在不同程度上取得了一定的成功,但是图像分割问题还远远没有解决。本文从图像分割的定义、应用等研究背景入手,深入介绍了目前各种经典的图像分割算法,并在此基础比较了各种算法的优缺点,总结了当前图像分割技术中所面临的挑战,最后展望了其未来值得努力的研究方向。 关键词:图像分割 阀值分割 边缘分割 区域分割 一、 引言 图像分割是图像从处理到分析的转变关键,也是一种基本的计算机视觉技术。通过图像的分割、目标的分离、特征的提取和参数的测量将原始图像转化为更抽象更紧凑的形式,使得更高层的分析和理解成为可能,因此它被称为连接低级视觉和高级视觉的桥梁和纽带。所谓图像分割就是要将图像表示为物理上有意义的连通区域的集合,也就是根据目标与背景的先验知识,对图像中的目标、背景进行标记、定位,然后将目标从背景或其它伪目标中分离出来[1]。 图像分割可以形式化定义如下[2]:令有序集合表示图像区域(像素点集),H 表示为具有相同性质的谓词,图像分割是把I 分割成为n 个区域记为Ri ,i=1,2,…,n ,满足: (1) 1,,,,n i i j i R I R R i j i j ===??≠ (2) (),1,2,,i i i n H R True ?== (3) () ,,,i j i j i j H R R False ?≠= 条件(1)表明分割区域要覆盖整个图像且各区域互不重叠,条件(2)表明每个区域都具有相同性质,条件(3)表明相邻的两个区域性质相异不能合并成一个区域。 自上世纪70年代起,图像分割一直受到人们的高度重视,其应用领域非常广泛,几乎出现在有关图像处理的所有领域,并涉及各种类型的图像。主要表现在: 1)医学影像分析:通过图像分割将医学图像中的不同组织分成不同的区域,以便更好的

数字图像处理点运算和直方图处理

实验1 点运算和直方图处理 一、实验目的 1. 掌握利用Matlab图像工具箱显示直方图的方法 2. 掌握运用点操作进行图像处理的基本原理。 3. 进一步理解利用点操作这一方法进行图像处理的特点。 4. 掌握利用Matlab图像工具箱进行直方图均衡化的基本方法。 二、实验的硬件、软件平台 硬件:计算机 软件:操作系统:WINDOWS 7 应用软件:MATLAB 三、实验内容及步骤 1. 了解Matlab图像工具箱的使用。 2. 利用Matlab图像工具箱对图像进行点操作,要求完成下列3个题目中 的至少2个。 ⑴图1灰度范围偏小,且灰度偏低,改正之。 ⑵图2暗处细节分辨不清,使其能看清楚。 ⑶图3亮处细节分辨不清,使其能看清楚。 图1 图2 图3 3. 给出处理前后图像的直方图。 4. 利用MatLab图像处理工具箱中函数对以上图像进行直方图均衡化操 作,观察结果。 四、思考题 1. 点操作能完成哪些图像增强功能? 2. 直方图均衡化后直方图为何并不平坦?为何灰度级会减少? 五、实验报告要求

1.对点操作的原理进行说明。 2.给出程序清单和注释。 3.对处理过程和结果进行分析(包括对处理前后图像的直方图的分析)。 实验代码以及解读 点操作: I = imread('POINT1.BMP')。 %读入图像 j=rgb2gray(I)。%将图像转为灰度图像 INFO=IMFINFO('POINT1.BMP') %获取图片的格式、尺寸、颜色数量、修改时间等信息[l,r]=size(j)。%图片大小 figure。%建立一个图形框 subplot(221) imshow(j) %在两行两列的第一个位置放置图片j title('POINT1.BMP') %给该图片加上标题POINT1.BMP for m=1:l for n=1:r %从第一个像素循环到最后一个像素p1(m,n)=j(m,n)*1.2。%把各点乘上1.2得到p1图 end end for m=1:l for n=1:r p2(m,n)=j(m,n)*2。%%把各点乘上2得到p2图 end end for m=1:l for n=1:r p3(m,n)=j(m,n)*2+50。%把各点乘上2再加50得到p2图 end end subplot(222) imshow(p1) title('j(m,n)*1.2') %p1图放在第二个位置且冠名j(m,n)*1.2 subplot(223) imshow(p2) title('j(m,n)*2') %p1图放在第三个位置且冠名j(m,n)* 2 subplot(224) imshow(p3) title('j(m,n)*2+50') %p1图放在第四个位置且冠名j(m,n)*2+50 figure。%建立一个新的窗口并且依次显示以上四个图的直方图

图像分割算法研究及实现

中北大学 课程设计说明书 学生姓名:梁一才学号:10050644X30 学院:信息商务学院 专业:电子信息工程 题目:信息处理综合实践: 图像分割算法研究与实现 指导教师:陈平职称: 副教授 2013 年 12 月 15 日

中北大学 课程设计任务书 13/14 学年第一学期 学院:信息商务学院 专业:电子信息工程 学生姓名:焦晶晶学号:10050644X07 学生姓名:郑晓峰学号:10050644X22 学生姓名:梁一才学号:10050644X30 课程设计题目:信息处理综合实践: 图像分割算法研究与实现 起迄日期:2013年12月16日~2013年12月27日课程设计地点:电子信息科学与技术专业实验室指导教师:陈平 系主任:王浩全 下达任务书日期: 2013 年12月15 日

课程设计任务书 1.设计目的: 1、通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力; 2、掌握Matlab使用方法,能熟练运用该软件设计并完成相应的信息处理; 3、通过图像处理实践的课程设计,掌握设计图像处理软件系统的思维方法和基本开发过程。 2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等): (1)编程实现分水岭算法的图像分割; (2)编程实现区域分裂合并法; (3)对比分析两种分割算法的分割效果; (4)要求每位学生进行查阅相关资料,并写出自己的报告。注意每个学生的报告要有所侧重,写出自己所做的内容。 3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕: 每个同学独立完成自己的任务,每人写一份设计报告,在课程设计论文中写明自己设计的部分,给出设计结果。

直方图图像处理实验报告

数字图像处理实验 实验一 直方图处理 实验目的 ● 理解图像直方图的概念,掌握图像直方图的绘制方法 ● 掌握直方图均衡化的原理,并会用直方图均衡化对图像进行处理。 实验要求 1.读入图像,可使用imread 。 2.输出图像,可使用imshow 。 3.绘制图像pout.tif 的归一化的直方图,可使用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 1 1 )()( 式中k =1,2,…,L ,s k 是输出图像中的亮度值,它对应于出入图像中的亮度值r k 。 实验心得: 1. matlab 的函数的功能很强大,一个简单的函数调用就可以解决复杂的问题。这样,就需要在函数调用时注意函数的参数,否则很容易出错。比如函数 histeq(a,n),就要注意其中的n 为灰度值的个数。 2. 对于自己编写函数实现某些特定的功能时,需要对原理掌握清楚,如实验二中需自己编写函数实现图像的均衡,就要求对直方图的均衡原理掌握到位。

摄像头编程并且对图像的处理以及直方图的算法

题目:图像的基本处理班级:2011级软件2班姓名:刘磊磊 时间:20130907

摘要:随着数字化与多媒体时代的来临,数字图像处理已经成为必备的基础知识。全国各大专院校的计算机、电子、通信、医学、光学及许多相关专业都开设了与数字图像预处理相关的课程。数字图像二值化是图像预处理中的一项重要技术,其在模式识别、光学字符识别、医学成像等方面都有着重要应用。本论文主要为大家介绍24位真彩图像的灰度、二值处理以及图像的一些简单的打开和保存和如何画直方图,还有一些通过这次小学期学到的一些知识。 关键字:灰度处理,二值化 图像的打开 void CText1Dlg::ShowPic() { if(m_path =="") //判断图片路径是否存在 { return; } hwnd = GetDlgItem(IDC_pic); hDesDC = hwnd->GetDC()->m_hDC; hSrcDC = CreateCompatibleDC(hDesDC); hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),m_path,IMAGE_BITMAP,0,0, LR_LOADFROMFILE|LR_CREATEDIBSECTION); GetObject(hBitmap, sizeof(BITMAP), &bm); SelectObject(hSrcDC, hBitmap); hwnd->GetClientRect(&rect); ::SetStretchBltMode(hDesDC,COLORONCOLOR); ::StretchBlt(hDesDC, rect.left, rect.top, rect.right, rect.bottom, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,+SRCCOPY); UpdateData(false);

数字图像处理基础知识总结

第一章数字图像处理概论 *图像是对客观存在对象的一种相似性的、生动性的描述或写真。 *模拟图像 空间坐标和明暗程度都是连续变化的、计算机无法直接处理的图像 *数字图像 空间坐标和灰度均不连续的、用离散的数字(一般整数)表示的图像(计算机能处理)。是图像的数字表示,像素是其最小的单位。 *数字图像处理(Digital Image Processing) 利用计算机对数字图像进行(去除噪声、增强、复原、分割、特征提取、识别等)系列操作,从而获得某种预期的结果的技术。(计算机图像处理) *数字图像处理的特点(优势) (1)处理精度高,再现性好。(2)易于控制处理效果。(3)处理的多样性。(4)图像数据量庞大。(5)图像处理技术综合性强。 *数字图像处理的目的 (1)提高图像的视感质量,以达到赏心悦目的目的 a.去除图像中的噪声; b.改变图像的亮度、颜色; c.增强图像中的某些成份、抑制某些成份; d.对图像进行几何变换等,达到艺术效果; (2)提取图像中所包含的某些特征或特殊信息。 a.模式识别、计算机视觉的预处理 (3)对图像数据进行变换、编码和压缩,以便于图像的存储和传输。 **数字图像处理的主要研究内容 (1)图像的数字化 a.如何将一幅光学图像表示成一组数字,既不失真又便于计算机分析处理 b.主要包括的是图像的采样与量化 (2*)图像的增强 a.加强图像的有用信息,消弱干扰和噪声 (3)图像的恢复 a.把退化、模糊了的图像复原。模糊的原因有许多种,最常见的有运动模糊,散焦模糊等(4*)图像的编码 a.简化图像的表示,压缩表示图像的数据,以便于存储和传输。 (5)图像的重建 a.由二维图像重建三维图像(如CT) (6)图像的分析 a.对图像中的不同对象进行分割、分类、识别和描述、解释。 (7)图像分割与特征提取 a.图像分割是指将一幅图像的区域根据分析对象进行分割。 b.图像的特征提取包括了形状特征、纹理特征、颜色特征等。 (8)图像隐藏 a.是指媒体信息的相互隐藏。 b.数字水印。 c.图像的信息伪装。 (9)图像通信

图像处理基础知识

网络域名及其管理 【教材分析】 本节课是浙江教育出版社出版的普通高中课程标准实验教科书《信息技术基础》第三章第三节的内容。教材内容分图像的几个基本概念和图像的编辑加工两部分。基本概念有:像素、分辨率、位图和矢量图、颜色、图形与图像、文件格式。其中“像素和分辨率”旨在让学生了解描述数字图像的基本概念;“位图和矢量图,图形和图像”重在要求学生分清这两组概念;“颜色”阐述了用计算机三原色描述和存储数字图像颜色的原理,学生应该学会计算一幅图像的存储空间。“文件格式和图像的编辑加工”旨在让学生了解常见的图像文件格式及简单的图像编辑加工。因此不作为教学的重点。由此可见,本节课内容重在概念原理和技术深层思想的探析,为学生今后进一步学习图像的编辑加工奠定了基础。同时,这部分知识也是对第一章“信息的编码”学习的一个承接,在内容上强化了多媒体信息的编码与二进制编码的对应关系。当然,在这些概念的学习中都体现了“由简单到复杂”这一人类认识事物的基本规律和“逐步细化”这一信息技术解决问题的基本思路,都体现了问题解决与“技术更好地为人服务”的基本思想。 【学情分析】 本节课的学习对象为高一学生。通过第一章的学习,他们已经能够掌握信息的编码及二进制的相关知识。但调查发现,对于具体的图像在计算机市如何表示的,学生还只是有一个大概的了解,知道是用二进制表示的。作为必修课的学习,学生对于信息技术不仅要“知其然”,更重要的是“知其所以然”,也即要理解相关技术原理,技术思想以及研究问题的方法。而理解的目的则是为了更好联系日常生活,更好的的应用。基于上述分析,引领他们探究数字图像的基础知识、训练解决信息技术问题的方法。 【课时安排】一课时 【教学目标】 (一)知识与技能 1.了解像素掌握图像分辨率的概念。 2.掌握数字图像颜色的表示方法及存储空间的大小。 3. 了解位图和矢量图,图像和图形的不同。 4. 了解图像文件的文件格式。 5. 在操作体验的基础上理解像素及颜色的表示。 (二)过程与方法 通过教师讲解、自主探究、讨论交流和操作实践,掌握像素、分辨率、数字图像的颜色的表示方式,进而能够运用这些知识分析、解决现实生活中碰到的实际问题。 (三)情感态度与价值观 结合ps图像的讲解训练,培养灌输学生的法制观念提高学生的网络道德水平。 【教学重点】 分辨率的定义及现实生活中的分辨率的使用;。 【教学难点】 数字图像颜色的表示及存储方法 【教学策略】

基于matlab数字图像处理与识别系统含程序

目录 第一章绪论 (2) 1.1 研究背景 (2) 1.2 人脸图像识别的应用前景 (3) 1.3 本文研究的问题 (4) 1.4 识别系统构成 (4) 1.5 论文的内容及组织 (5) 第二章图像处理的Matlab实现 (6) 2.1 Matlab简介 (6) 2.2 数字图像处理及过程 (6) 2.2.1图像处理的基本操作 (6) 2.2.2图像类型的转换 (7) 2.2.3图像增强 (7) 2.2.4边缘检测 (8) 2.3图像处理功能的Matlab实现实例 (8) 2.4 本章小结 (11) 第三章人脸图像识别计算机系统 (11) 3.1 引言 (11) 3.2系统基本机构 (12) 3.3 人脸检测定位算法 (13) 3.4 人脸图像的预处理 (18) 3.4.1 仿真系统中实现的人脸图像预处理方法 (19) 第四章基于直方图的人脸识别实现 (21) 4.1识别理论 (21) 4.2 人脸识别的matlab实现 (21) 4.3 本章小结 (22) 第五章总结 (22) 致谢 (23) 参考文献 (24) 附录 (25)

第一章绪论 本章提出了本文的研究背景及应用前景。首先阐述了人脸图像识别意义;然后介绍了人脸图像识别研究中存在的问题;接着介绍了自动人脸识别系统的一般框架构成;最后简要地介绍了本文的主要工作和章节结构。 1.1 研究背景 自70年代以来.随着人工智能技术的兴起.以及人类视觉研究的进展.人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,.这一领域除了它的重大理论价值外,也极具实用价值。 在进行人工智能的研究中,人们一直想做的事情就是让机器具有像人类一样的思考能力,以及识别事物、处理事物的能力,因此从解剖学、心理学、行为感知学等各个角度来探求人类的思维机制、以及感知事物、处理事物的机制,并努力将这些机制用于实践,如各种智能机器人的研制。人脸图像的机器识别研究就是在这种背景下兴起的,因为人们发现许多对于人类而言可以轻易做到的事情,而让机器来实现却很难,如人脸图像的识别,语音识别,自然语言理解等。如果能够开发出具有像人类一样的机器识别机制,就能够逐步地了解人类是如何存储信息,并进行处理的,从而最终了解人类的思维机制。 同时,进行人脸图像识别研究也具有很大的使用价依。如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。现在己有实用的计算机自动指纹识别系统面世,并在安检等部门得到应用,但还没有通用成熟的人脸自动识别系统出现。人脸图像的自动识别系统较之指纹识别系统、DNA鉴定等更具方便性,因为它取样方便,可以不接触目标就进行识别,从而开发研究的实际意义更大。并且与指纹图像不同的是,人脸图像受很多因素的干扰:人脸表情的多样性;以及外在的成像过程中的光照,图像尺寸,旋转,姿势变化等。使得同一个人,

基于MATLAB的图像分割算法研究毕业设计

基于MA TLAB的图像分割算法研究 基于MATLAB的图像分割算法研究 摘要 本文从原理和应用效果上对经典的图像分割方法如边缘检测、阈值分割技术和区域增长等进行了分析。对梯度算法中的Roberts算子、Sobel算子、Prewitt算子、拉普拉斯(Laplacian)算子、LoG(Laplacian-Gauss)算子、坎尼(Canny)算子的分割步骤、分割方式、分割准则相互比较可以看出根据坎尼(Canny)边缘算子的3个准则得出的边缘检测结果最满意。而阈值分割技术的关键在于阈值的确定,只有阈值确定好了才能有效的划分物体与背景,但这种方法只对于那些灰度分布明显,背景与物体差别大的图像的分割效果才明显。区域增长的基本思想是将具有相似性质的像素集合起来构成新区域。与此同时本文还分析了图像分割技术研究的方向。 关键词:图像处理图像分割 Abstract This article analyses the application effect to the classics image segmentation method like the edge examination, territory value division technology, and the region growth and so on.For comparing the Roberts operator, Sobel operator, Prewitt operator, the operator of Laplacian and the operator of LoG(Laplacian-Gauss),Canny operator in gradient algorithm,the step, the way and the standard of the image segmentation,we can find out the three standard of Canny edge operator the edge detection result of reaching most satisfy. And the key point of threshold segmentation lie in fixing the threshold value, it is good to have only threshold value to determine it then can be effective to divide object and background,but this kind of method is good to those gray scales,the big difference image effect between the background and obiect. The basic idea of area is to form the new region from similar nature.And also, this paper analyses the research direction of image segmentation technology at the same time. Key words: image processing image segmentation operator

直方图图像处理实验报告

数字图像处理实验 实验一 直方图处理 实验目的 理解图像直方图的概念,掌握图像直方图的绘制方法 掌握直方图均衡化的原理,并会用直方图均衡化对图像进行处理。 实验要求 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),就要注意其中

数字图像处理实验报告--直方图规定化 0528

数字图像处理实验报告--直方图规定化

数字图像处理实验报告 实验名称:直方图规定化 姓名: 班级: 学号: 专业:电子信息工程(2+2) 指导教师:陈华华 实验日期:2012年5月24日

直方图匹配(规定化) 直方图均衡化能够自动增强整个图像的对比度,但它的具体增强效果不容易控制,处理的结果总是得到全局均匀化的直方图。实际上有时需要变换直方图,使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度。这时可以采用比较灵活的直方图规定化。一般来说正确地选择规定化的函数可以获得比直方图均衡化更好的效果。 所谓直方图规定化,就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。所以,直方图修正的关键就是灰度映像函数。 直方图匹配方法主要有3个步骤(这里设M和N分别为原始图和规定图中的灰度级数,且只考虑N≤M的情况): (1) 如同均衡化方法中,对原始图的直方图进行灰度均衡化: (2) 规定需要的直方图,并计算能使规定的直方图均衡化的变换: (3) 将第1个步骤得到的变换反转过来,即将原始直方图对应映射到规定的直方图,也就是将所有pf(fi)对应到pu(uj)去。 一、A图直方图规定B图

Matlab程序: %直方图规定化 clear all A=imread('C:\Users\hp\Desktop\A.tif'); %读入A图像 imshow(A) %显示出来 title('输入的A图像') %绘制直方图 [m,n]=size(A); %测量图像尺寸 B=zeros(1,256); %预创建存放灰度出现概率的向量 for k=0:255

Photoshop图像处理基础知识

(一)Photoshop图像处理基础知识 1)位图与矢量图 根据存储方式的不同,电脑中的图像通常被分为位图图像和矢量图形。了解和掌握两类图形间的差异,对于创建、编辑和导入图片都有很大的帮助。 ●什么是位图? 位图图像又叫栅格图像(像素图)。它是由很多色块(像素、点)组成的图像,一个像素点是图像中最小的图像元素。位图的大小和质量取决于图像中像素点的多少(单位面积)。对于位图图像来说,组成图像的色块越少,图像就会越模糊;组成图像的色块越多,图像越清晰,但存储文件时所需要的存储空间也会比较大。 一般用Photoshop制作的图像都是位图图像,比较适合制作细腻、轻柔飘渺的特殊效果,更容易模拟照片的真实效果,就像是用画笔在画布上作画一样。(Painter) ●什么是矢量图? 矢量图又称为向量图形(面向对象绘图),是用数学方式描述的线条和色块组成的图像,它们在计算机内部表示成一系列的数值而不是像素点。 这种保存图形信息的方法与分辨率无关,当对矢量图进行缩放时,图形仍能保持原有的清晰度,且色彩不失真。矢量图形的大小与图形的复杂程度有关,即简单的图形所占用的存储空间较小,复杂的图形所占用的存储空间较大。如Corel DRAW、Illustrator绘图软件创建的图形都是矢量图,适用于编辑色彩较为单纯的色块或文字,如标志设计、图案设计、文字设计、版式设计等。 ●位图与矢量图的区别与联系 基于位图处理的软件也不是说它就只能处理位图,同样基于矢量图处理的软件也不是只能处理矢量图。

基于矢量图的软件原创性比较强,主要长处在于原始创作;而基于位图的处理软件,后期处理比较强,主要长处在于图片的处理。 2)分辨率(主要以图像分辨率为主) 分辨率是用来描述图像文件信息的术语,表述为单位长度内点的数量,通常用“像素/英寸”(ppi)来表示。分辨率的高低直接影响图像的效果,使用太低的分辨率会导致图像粗糙,而使用较高的分辨率则会增加文件的大小。 图像分辨率设置原则 在Photoshop新建文件时,默认的分辨率为72像素/英寸,满足普通显示器显示图像的分辨率要求。(图像仅用于屏幕显示时与显示器分辨率相同,96像素/英寸)在广告设计中,不同用途的广告对分辨率的要求也不同,例如,印刷彩色图像(高档彩色印刷)时分辨率一般为300像素/英寸(300像素/英寸以上的图像可以满足任何输出要求);设计报纸广告(报纸插图)时分辨率一般为150像素/英寸;大型灯箱喷绘图像一般不低于30像素/英寸。 3)图像的色彩模式及特点 色彩模式是指同一属性下不同颜色的集合,它使用户在使用不同颜色进行显示、印刷或打印时,不必重新调配颜色而直接进行转换和应用(图像/模式)。电脑软件为用户提供的色彩模式主要有:位图模式、灰度模式、RGB模式、CMYK模式、索引颜色模式、Lab模式、双色调模式和多通道模式等。每一种模式都有自己的优缺点,都有自己的适用范围。 ①位图模式:该模式下的图像是由黑白两种颜色组成的,图形不能使用编辑工具编辑(例如,“图层”、“滤镜”)。只有在图像文件的颜色模式为灰度模式时,才能转换成位图模式。 ②灰度模式:该模式下的图像文件中只存在颜色的明(白色)暗(黑色)度,而没有色相、饱和度等色彩信息(颜色三要素)。它的应用十分广泛,在成本相对低廉的黑白印刷中

数字图像处理作业(第三次)直方图处理

数字图像处理作业(第三次)直方图处理

数字图像处理作业(第三次)直方图处理 第一题第二题(例3.6) 1. 问题: 1)编写函数Y=MyHisteq(X), 对灰度图象X进行直方图均衡化,得到均衡化后的图像Y,假设X的数据类型为uint8。 2)利用自己编写的直方图均衡化函数,重现例3.6中的实验,即对图3.16中的图像进行直方图均衡化。 2.程序: (1) 函数程序: function Y = MyHisteq(X) %对灰度图象X进行直方图均衡化,得到均衡化后的图像Y [m,n]=size(X); A=zeros(1,256); for k=0:255 A(k+1)=length(find(X==k))/(m*n); end S1=zeros(1,256); for i=1:256 for j=1:i

S1(i)=A(j)+S1(i); %算Sk end end S2=round(S1*256); for i=1:256 B(i)=sum(A(find(S2==i))); end figure,bar(0:255,B,'b'); title('均衡化后的直方图'); xlabel('灰度'),ylabel('出现概率') Y=X; for i=0:255 Y(find(X==i))=S2(i+1); end end (2)主程序: X=imread('Fig0316(1)(top_left).tif'); figure,imshow(X);

Y=MyHisteq(X); figure,imshow(Y); 3. 实验结果:

第三题(例3.12) 1. 问题: 编写程序,重现例3.12中的实验,产生图3.27。2.程序: X=imread('Fig0327(a)(tungsten_original).tif'); figure,imshow(X);

数字图像处理作业 直方图均衡

作业3:直方图均衡 1.选取一张对比度不明显的彩色图像,编写MATLAB代码对RGB通道独立地进行直方图 均衡,同时用PHOTOSHOP软件对其进行均衡,比较两种处理方法在效果上的差异。 使用R/G/B=image(:,:,1/2/3);提取图像的三个通道,imshow(R);显示三个通道的图像,imhist(R);显示对应颜色分量的直方图,r=histeq(R);分别对三个通道进行直方图均衡化,equated = cat(3,r,g,b);联合RGB三个数组,得到均衡化后的图像。 原图与matlab直方图均衡化后的图像 原图的RGB分量

均衡后的RGB分量 在photoshop中处理图像后得到下图的结果。 Ps中得到的图像RGB通道独立直方图均衡得到的图像比较:选取的原图是逆光拍摄,颜色很暗,暗部细节很多。经过matlab处理后,灰度级部分合并,灰度级较低的间隔变大,灰度级较高的间隔变小。但对真彩色图像的直方图均衡化时,通过单纯地对RGB三个分量图像分别均衡、合并, 会使均衡后的图像出现轻微的色彩失真现象, 而且原图中灰度级较高的地方的细节部分缺失。但是经过ps处理后的图像,原本灰度值较低的地方明显变亮,同时原本灰度值较高的地方仍然很好保留了,并没有出现matlab处理后的问题。Ps处理后的图像色彩也很正常,没有出现失真的问题。 数字图像直方图的算法步骤: ①列出原始图像的灰度级f j,j=0,1,…,L-1, ②统计各灰度级的像素数目n j,j=0,1,…,L-1, ③计算原始图像直方图各灰度级的频数p(f j)= n j/N,j=0,1,…,L-1, ④计算累计分布函数C(j)=Σp(f k), j=0,1,…,L-1, ⑤g i= INT[(g max-g min)C(f)+g min+0.5]

图像处理基础知识——教案

图像处理基础 教学目标 1.知识目标: →掌握图像信息的采样、量化、编码的基本原理。 →知道屏幕分辨率、显示器分辨率及图像分辨率的概念。 →掌握图形和图像的概念与特点。 2.能力目标: →学会查看显示器分辨率。 →学会调整屏幕分辨率。 →学会分辨数字图像的类型(矢量图或是位图)。 3.情感目标: 通过理论联系实际的教学方式,引导学生从现实生活的经历与体验出发,激发学生对计算机图像处理的兴趣,形成主动学习的情感态度。 教学重点 →图像信息数字化原理 →分辨率的概念 →图形、图像的概念及应用特性 教学难点 →对图像数字化过程的理解 →图像存储容量的计算 教学内容 1.图像信息数字化 1.1采样 空间上连续的图像用许多等距的水平线与竖直线分割开来,转换成离散点的过程。 1.2量化 量化:将采样点(像素)的灰度(亮度)离散化,使之由连续量转换为离散的整数值即灰度值、灰度级(gray level)的过程。 量化位数:表示量化后各像素的色彩值所需要占用的二进制位数。

灰度图像:可以用8位,256个级数来表示从白到黑的灰度变化。 彩色图像:数据不仅包含亮度信息,还要包含颜色信息。彩色的表示方法是多样化的。可由红、绿、蓝三基色图像叠加而成。 1.3存储容量的计算 图像存储容量=图像水平方向的像素数×竖直方向的像素数×每个像素占用的色彩位数2.分辨率 2.1现实器分辨率 显示器分辨率:计算机显示器本身的物理特性。 2.2屏幕分辨率 屏幕分辨率:实际显示图像时计算机所采用的分辨率。 2.3图像分辨率 图像分辨率:在计算机中保存和显示一幅数字图像所具有的分辨率。 如:一张640*480像素的图片,分辨率为640*480=307200像素。 3.图形和图像 3.1图形(矢量图) 图形也称矢量图,它用计算机绘图工具绘制的画面,图形是以数学方法描述的,通过计算机指令来表示的图形。 3.2图像(位图) 图像也称位图,它是由扫描仪、数码相机等图像采集设备扑捉的实际画面而转化而来的数字图像。 3.3矢量图与位图的对比

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

(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是帧内像素总数。则离散函数的变换函数表达式:

相关文档
最新文档