收藏 分销(赏)

广工数字图像处理课程设计直方图均衡化源文件(vc++和MATLAB).doc

上传人:精*** 文档编号:1282124 上传时间:2024-04-20 格式:DOC 页数:8 大小:20.96KB
下载 相关 举报
广工数字图像处理课程设计直方图均衡化源文件(vc++和MATLAB).doc_第1页
第1页 / 共8页
广工数字图像处理课程设计直方图均衡化源文件(vc++和MATLAB).doc_第2页
第2页 / 共8页
广工数字图像处理课程设计直方图均衡化源文件(vc++和MATLAB).doc_第3页
第3页 / 共8页
广工数字图像处理课程设计直方图均衡化源文件(vc++和MATLAB).doc_第4页
第4页 / 共8页
广工数字图像处理课程设计直方图均衡化源文件(vc++和MATLAB).doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、VC+的源程序如下;/ txclView.cpp : implementation of the CTxclView class/#include stdafx.h#include txcl.h#include txclDoc.h#include txclView.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CTxclViewint m_yuan256,m_hist256;IMPLEMENT_DYNCREATE(CTxclView, CView)BEGIN_M

2、ESSAGE_MAP(CTxclView, CView)/AFX_MSG_MAP(CTxclView)ON_COMMAND(OPEN, OnOPEN)ON_COMMAND(His, OnHis)/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)END_MESSA

3、GE_MAP()/ CTxclView construction/destructionCTxclView:CTxclView()/ TODO: add construction code hereCTxclView:CTxclView()BOOL CTxclView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CView:PreCreateWindow(cs);/ CTxclView drawing

4、void CTxclView:OnDraw(CDC* pDC)CTxclDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data hereif(m_dib.m_bLoaded=true) /判断是否加载图像/获取图像宽和高int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();/ 显示图像(具体的参数见CDIB类的该函数说明)m_dib.ShowDIB(pDC,10,10,nw,nh,m_dib.m_pDIBData,m_dib.m_

5、pBMI);m_dib.ShowDIB(pDC,400,10,nw,nh,m_dib.m_pDumpDIBData,m_dib.m_pBMI);/ CTxclView printingBOOL CTxclView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CTxclView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization befo

6、re printingvoid CTxclView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CTxclView diagnostics#ifdef _DEBUGvoid CTxclView:AssertValid() constCView:AssertValid();void CTxclView:Dump(CDumpContext& dc) constCView:Dump(dc);CTxclDoc* CTxclView:GetDocument() / non-de

7、bug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CTxclDoc);return (CTxclDoc*)m_pDocument;#endif /_DEBUG/ CTxclView message handlersvoid CTxclView:OnOPEN() / TODO: Add your command handler code here static char szFilter=BMP文件(*.bmp)|*.bmp|; /定义过滤文件的类型 CFileDialog dlg(TRUE,bmp,NULL,OFN_H

8、IDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);/定义文件对话框对象 CString filename; int ret=dlg.DoModal(); /运行打开文件对方框 if(ret=IDOK) filename=dlg.GetFileName(); /获取所选择图像的路径 m_dib.LoadFromFile(filename); /加载图像 if(!m_dib.m_bLoaded) /判断是否加载图像成功 AfxMessageBox(图像打不开);return; Invalidate(1);/刷新屏幕void CTxclView:OnHis() /

9、TODO: Add your command handler code here/功能:实现直方图均衡化/判断图像是否打开,没打开,则弹出提示框并退出函数if(!m_dib.m_bLoaded) AfxMessageBox(别急呀,还没打开原图呢,啦啦啦啦);return; /获取图像宽和高int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();int i,j,k;int count256=0;/定义一个数组,存放灰度级个数float p256=0;/定义一个数组,存放灰度级频率for(i=0;inh;i+)for(j=0;jnw;j+)k

10、=m_dib.m_pdatai*nw+j;/计算灰度级个数countk+; for(k=0;k256;k+)pk=countk/(nw*nh*1.0f);/计算灰度级频率float c256=0;float sum=0.0;int ngray256=0;for(k=0;k256;k+)sum+=pk;ck=sum; /计算累计直方图ngrayk=(int)(255*ck+0.5);/确定映射关系for(i=0;inh;i+)for(j=0;jnw;j+)k=m_dib.m_pdatai*nw+j;m_dib.m_pdatai*nw+j=ngrayk; /均衡化 if(m_dib.m_bLoad

11、ed=true)int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();for(int j=0;jnh;j+)for(int i=0;i=1000#pragma once#endif/DBI.H:header file/CDIB classclass CDIB:public CObjectpublic:int m_nImType;void close();void UpdateData();void InvalidateData();BYTE *m_pdata;BYTE *m_pR,*m_pG,*m_pB;void ShowDIB(CDC

12、*,int,int,int,int,BYTE*,BITMAPINFO*);bool m_bLoaded;CDIB();virtual CDIB();BITMAPINFO* m_pBMI; /BITMAPINFO pointerBYTE* m_pDIBData; /DIB data pointerBYTE* m_pDumpDIBData;BITMAPFILEHEADER bfh;BITMAPINFOHEADER bih;CPalette *m_pPalette; DWORD dataBytes;bool SaveFile(LPCTSTR lpszFileName);virtual bool Lo

13、adFromFile(LPCTSTR lpszFileName);int GetDIBWidth()return m_pBMI-bmiHeader.biWidth;int GetDIBHeight()return m_pBMI-bmiHeader.biHeight;/#endif / !defined (_DIB_H_)MATLAB程序;RGB = imread(1.png); % 读取彩色图subplot(131);imshow(RGB);title(彩色图);I=rgb2gray(RGB); % 将彩色图转化为灰度图subplot(132);imshow(I);title(灰度图);R,

14、C = size(I);% 统计每个像素值出现次数cnt = zeros(1, 256);for i = 1 : R for j = 1 : C cnt(1, I(i, j) + 1) = cnt(1, I(i, j) + 1) + 1; endendf = zeros(1, 256);f = double(f); cnt = double(cnt);% 统计每个像素值出现的概率, 得到概率直方图for i = 1 : 256 f(1, i) = cnt(1, i) / (R * C);end% 求累计概率,得到累计直方图for i = 2 : 256 f(1, i) = f(1, i - 1) + f(1, i);end% 用f数组实现像素值0, 255的映射。 for i = 1 : 256 f(1, i) = f(1, i) * 255;end% 完成每个像素点的映射I = double(I);for i = 1 : R for j = 1 : C I(i, j) = f(1, I(i, j) + 1); endend% 输出I = uint8(I);subplot(133);imshow(I);title(直方图均衡化);

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服