




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、設計題目:直方圖均衡化1、直方圖的理論基礎:(1)直方圖概念:灰度直方圖表示圖像中每種灰度出現(xiàn)的頻率。(2)直方圖的作用: 反映一幅圖像的灰度分布特性(3)直方圖的計算:式中:nk為圖像中出現(xiàn)rk級灰度的像素數(shù),n是圖像像素總數(shù),而nk/n即為頻數(shù)。2、設計目的: 產(chǎn)生一幅灰度級分布具有均勻概率密度的圖像,擴展像素取值的動態(tài)范圍,達到了圖象增強的目的。3、直方圖均衡化的效果 : 1)變換后直方圖趨向平坦,灰級減少,灰度合并。 2)原始象含有象素數(shù)多的幾個灰級間隔被拉大了,壓縮的只是象素數(shù)少的幾個灰度級,實際視覺能夠接收的信息量大大地增強了,增加了圖象的反差。同時,也增加了圖象的可視粒度。 4、
2、離散情況下的直方圖均衡化的算法:A、列出原始圖像的灰度級 B、統(tǒng)計各灰度級的像素數(shù)目C、計算原始圖像直方圖各灰度級的頻數(shù)D、計算累積分布函數(shù)F、應用以下公式計算映射后的輸出圖像的灰度級,P為輸出圖像灰度級的個數(shù),其中INT為取整符號:G、用的映射關系修改原始圖像的灰度級,從而獲得直方圖近似為均勻分布的輸出圖像。3、源程序代碼 / cqxhistView.cpp : implementation of the CCqxhistView class#include "stdafx.h"#include "cqxhist.h"#include "cq
3、xhistDoc.h"#include "cqxhistView.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CCqxhistViewIMPLEMENT_DYNCREATE(CCqxhistView, CView)BEGIN_MESSAGE_MAP(CCqxhistView, CView)/AFX_MSG_MAP(CCqxhistView)ON_COMMAND(ID_OPEN_IMAGE, OnOpenImage)ON_COMM
4、AND(ID_HIST_IMAGE, OnHistImage)/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_, CView:On)ON_COMMAND(ID_, CView:On)ON_COMMAND(ID_, CView:On)END_MESSAGE_MAP()/ CCqxhistView construction/destructionCCqxhistView:CCqxhistView()/ TODO: add construction code hereCCqxhistView:CCqxhistView()BOOL CCqxh
5、istView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CView:PreCreateWindow(cs);/ CCqxhistView drawingvoid CCqxhistView:OnDraw(CDC* pDC)CCqxhistDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native
6、data hereif(m_dib.m_bLoaded=true) /判斷是否加載圖像/獲取圖像寬和高int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();/ 顯示圖像(具體的參數(shù)見CDIB類的該函數(shù)說明)m_dib.ShowDIB(pDC,10,10,nw,nh,m_dib.m_pDIBData,m_dib.m_pBMI);m_dib.ShowDIB(pDC,400,10,nw,nh,m_dib.m_pDumpDIBData,m_dib.m_pBMI);if(m_bHist=true) /繪制原圖像的直方圖CString str;int
7、 nh=m_dib.GetDIBHeight();int i;/畫坐標軸/ 繪制坐標軸pDC->MoveTo(410,nh+20); /(410,nh+20 )是直方圖的左上角坐標 / 垂直軸pDC->LineTo(410,nh+200);/(410,nh+200 )是直方圖的左下角坐標 / 水平軸pDC->LineTo(710,nh+200);/(710,nh+200 )是直方圖的右下角坐標 / 寫X軸刻度值str.Format("0");pDC->TextOut(410, nh+200+10, str);str.Format("50&q
8、uot;);pDC->TextOut(460, nh+200+10, str);str.Format("100");pDC->TextOut(510, nh+200+10, str);str.Format("150");pDC->TextOut(560, nh+200+10, str);str.Format("200");pDC->TextOut(610, nh+200+10, str);str.Format("255");pDC->TextOut(665, nh+200+10, st
9、r);/ 繪制X軸刻度for ( i = 0; i < 256; i += 25)if (i & 1) = 0)/ 10的倍數(shù)pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);else/ 10的倍數(shù)pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);/ 繪制X軸箭頭pDC->MoveTo(705,nh+200-5);pDC->LineTo(710,nh+200);pDC->LineTo(705,nh+2
10、00+5);/ 繪制y軸箭頭pDC->MoveTo(410,nh+20);pDC->LineTo(405,nh+20+5);pDC->MoveTo(410,nh+20);pDC->LineTo(415,nh+20+5);int max=0;for(i=0;i<256;i+)if(m_yuani>max)max=m_yuani;for(i=0;i<256;i+)pDC->MoveTo(410+i,nh+200);pDC->LineTo(410+i,nh+200-(m_yuani*160/max);if(m_bHist=true)/繪畫直方圖C
11、String str;int nh=m_dib.GetDIBHeight();int i;/畫坐標軸/ 繪制坐標軸pDC->MoveTo(10,nh+20); /(10,nh+20 )是直方圖的左上角坐標 / 垂直軸pDC->LineTo(10,nh+200);/(10,nh+200 )是直方圖的左下角坐標 / 水平軸pDC->LineTo(310,nh+200);/(310,nh+200 )是直方圖的右下角坐標 / 寫X軸刻度值str.Format("0");pDC->TextOut(10, nh+200+10, str);str.Format(&
12、quot;50");pDC->TextOut(60, nh+200+10, str);str.Format("100");pDC->TextOut(110, nh+200+10, str);str.Format("150");pDC->TextOut(160, nh+200+10, str);str.Format("200");pDC->TextOut(210, nh+200+10, str);str.Format("255");pDC->TextOut(265, nh+20
13、0+10, str);/ 繪制X軸刻度for ( i = 0; i < 256; i += 25)if (i & 1) = 0)/ 10的倍數(shù)pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);else/ 10的倍數(shù)pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);/ 繪制X軸箭頭pDC->MoveTo(305,nh+200-5);pDC->LineTo(310,nh+200);pDC->LineTo(
14、305,nh+200+5);/ 繪制y軸箭頭pDC->MoveTo(10,nh+20);pDC->LineTo(5,nh+20+5);pDC->MoveTo(10,nh+20);pDC->LineTo(15,nh+20+5);int max=0;for(i=0;i<256;i+)if(m_histi>max)max=m_histi;for(i=0;i<256;i+)pDC->MoveTo(10+i,nh+200);pDC->LineTo(10+i,nh+200-(m_histi*160/max);/ CCqxhistView printin
15、gBOOL CCqxhistView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CCqxhistView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CCqxhistView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO
16、: add cleanup after printing/ CCqxhistView diagnostics#ifdef _DEBUGvoid CCqxhistView:AssertValid() constCView:AssertValid();void CCqxhistView:Dump(CDumpContext& dc) constCView:Dump(dc);CCqxhistDoc* CCqxhistView:GetDocument() / non-debug version is inlineASSERT(m_pDocument->IsKindOf(RUNTIME_CL
17、ASS(CCqxhistDoc);return (CCqxhistDoc*)m_pDocument;#endif /_DEBUG/ CCqxhistView message handlersvoid CCqxhistView:OnOpenImage() / TODO: Add your command handler code here/ TODO: Add your command handler code herestatic char szFilter="BMP文件(*.bmp)|*.bmp|" /定義過濾文件的類型 C dlg(TRUE,"bmp"
18、;,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);/定義文件對話框?qū)ο?CString ;int ret=dlg.DoModal(); /運行打開文件對方框if(ret=IDOK)(); /獲取所選擇圖像的路徑 m_dib.LoadFrom); /加載圖像 if(!m_dib.m_bLoaded) /判斷是否加載圖像成功AfxMessageBox("圖像打不開"); return;for(int i=0;i<256;i+) /初始化直方圖數(shù)組 m_histi=0; m_yuani=0; m_bHist=fals
19、e;int nw=m_dib.GetDIBWidth(); int nh=m_dib.GetDIBHeight(); for(int j=0;j<nh;j+)for(int i=0;i<nw;i+) BYTE temp=m_dib.m_pdataj*nw+i; m_yuantemp+;Invalidate(1);/刷新屏幕void CCqxhistView:OnHistImage() / TODO: Add your command handler code here/功能:實現(xiàn)直方圖均衡化/判斷圖像是否打開,沒打開,則彈出提示框并退出函數(shù)if(!m_dib.m_bLoaded) AfxMessageBox("圖像還打開,請先打開圖像!");return; /獲取圖像寬和高int nw=m_dib.GetDIBWidth();int nh=m_dib.GetDIBHeight();int i,j,k; int count256=0;/定義一個數(shù)組,用于存放灰度級個數(shù) float p256;/定義一個數(shù)組,用于存放灰度級出現(xiàn)頻率/對圖像進行直方圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c11h10o4的六元環(huán)化合物
- 深圳學??臻g施工方案
- 臺州混凝土破碎施工方案
- 2025年江蘇旅游職業(yè)學院單招職業(yè)傾向性測試題庫含答案
- 2025年河北科技學院單招職業(yè)適應性測試題庫匯編
- 2025年重慶財經(jīng)職業(yè)學院單招職業(yè)技能測試題庫完整
- 2024新教材高中化學 第1章 第1節(jié) 走進化學科學教學實錄 魯科版必修第一冊
- 在線教育平臺課程制作規(guī)范
- 農(nóng)業(yè)智慧農(nóng)場建設與管理方案
- 游戲行業(yè)產(chǎn)品測試與發(fā)布流程指南
- 2025年揚州市職業(yè)大學單招職業(yè)技能測試題庫參考答案
- 虛擬現(xiàn)實環(huán)境中視覺體驗優(yōu)化
- 班組長安全管理培訓課件
- 2025年新疆生產(chǎn)建設兵團興新職業(yè)技術學院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 中考物理復習歐姆定律復習講解學習
- 2025年春新外研版(三起)英語三年級下冊課件 Unit5第1課時Startup
- 優(yōu)生五項臨床意義
- 2024年池州職業(yè)技術學院單招職業(yè)技能測試題庫標準卷
- 事故隱患內(nèi)部報告獎勵機制實施細則
- 小學六年級數(shù)學學情分析及提升方案
- 事業(yè)單位考試(公共基礎知識)3000題每日練習
評論
0/150
提交評論