![數(shù)字圖像處理課程設(shè)計報告直方圖均衡化_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/d1cb4af4-1bc2-4e66-82d5-097c1bfae916/d1cb4af4-1bc2-4e66-82d5-097c1bfae9161.gif)
![數(shù)字圖像處理課程設(shè)計報告直方圖均衡化_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/d1cb4af4-1bc2-4e66-82d5-097c1bfae916/d1cb4af4-1bc2-4e66-82d5-097c1bfae9162.gif)
![數(shù)字圖像處理課程設(shè)計報告直方圖均衡化_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/d1cb4af4-1bc2-4e66-82d5-097c1bfae916/d1cb4af4-1bc2-4e66-82d5-097c1bfae9163.gif)
![數(shù)字圖像處理課程設(shè)計報告直方圖均衡化_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/d1cb4af4-1bc2-4e66-82d5-097c1bfae916/d1cb4af4-1bc2-4e66-82d5-097c1bfae9164.gif)
![數(shù)字圖像處理課程設(shè)計報告直方圖均衡化_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/6/d1cb4af4-1bc2-4e66-82d5-097c1bfae916/d1cb4af4-1bc2-4e66-82d5-097c1bfae9165.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、設(shè)計題目:直方圖均衡化1、直方圖的理論基礎(chǔ):(1)直方圖概念:灰度直方圖表示圖像中每種灰度出現(xiàn)的頻率。(2)直方圖的作用: 反映一幅圖像的灰度分布特性(3)直方圖的計算:式中:nk為圖像中出現(xiàn)rk級灰度的像素數(shù),n是圖像像素總數(shù),而nk/n即為頻數(shù)。2、設(shè)計目的: 產(chǎn)生一幅灰度級分布具有均勻概率密度的圖像,擴展像素取值的動態(tài)范圍,達到了圖象增強的目的。3、直方圖均衡化的效果 : 1)變換后直方圖趨向平坦,灰級減少,灰度合并。 2)原始象含有象素數(shù)多的幾個灰級間隔被拉大了,壓縮的只是象素數(shù)少的幾個灰度級,實際視覺能夠接收的信息量大大地增強了,增加了圖象的反差。同時,也增加了圖象的可視粒度。 4、
2、離散情況下的直方圖均衡化的算法:A、列出原始圖像的灰度級 B、統(tǒng)計各灰度級的像素數(shù)目C、計算原始圖像直方圖各灰度級的頻數(shù)D、計算累積分布函數(shù)F、應(yīng)用以下公式計算映射后的輸出圖像的灰度級,P為輸出圖像灰度級的個數(shù),其中INT為取整符號:G、用的映射關(guān)系修改原始圖像的灰度級,從而獲得直方圖近似為均勻分布的輸出圖像。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;/畫坐標(biāo)軸/ 繪制坐標(biāo)軸pDC->MoveTo(410,nh+20); /(410,nh+20 )是直方圖的左上角坐標(biāo) / 垂直軸pDC->LineTo(410,nh+200);/(410,nh+200 )是直方圖的左下角坐標(biāo) / 水平軸pDC->LineTo(710,nh+200);/(710,nh+200 )是直方圖的右下角坐標(biāo) / 寫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;/畫坐標(biāo)軸/ 繪制坐標(biāo)軸pDC->MoveTo(10,nh+20); /(10,nh+20 )是直方圖的左上角坐標(biāo) / 垂直軸pDC->LineTo(10,nh+200);/(10,nh+200 )是直方圖的左下角坐標(biāo) / 水平軸pDC->LineTo(310,nh+200);/(310,nh+200 )是直方圖的右下角坐標(biāo) / 寫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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023三年級語文下冊 第一單元 2 燕子配套說課稿 新人教版
- 2024-2025學(xué)年高中語文 名著導(dǎo)讀 莎士比亞戲劇說課稿 新人教版必修4
- 9古詩三首清明說課稿2023-2024學(xué)年統(tǒng)編版語文三年級下冊
- Unit 4 Natural Disasters Reading for Writing 說課稿-2024-2025學(xué)年高中英語人教版(2019)必修第一冊
- Unit 2 lconic Attractions Learning About Language (1)說課稿 2023-2024學(xué)年高中英語人教版選擇性第四冊
- 2025主體信用評級合同
- 2025吊頂勞務(wù)承包合同
- 19《夜宿山寺》(說課稿)2024-2025學(xué)年部編版語文二年級上冊
- 2024-2025學(xué)年高中生物 第一章 人體的內(nèi)環(huán)境與穩(wěn)態(tài) 專題1.2 內(nèi)環(huán)境穩(wěn)態(tài)的重要性說課稿(基礎(chǔ)版)新人教版必修3001
- 7《壓歲錢的使用與思考》(說課稿)-2023-2024學(xué)年四年級下冊綜合實踐活動長春版
- 杭州市房地產(chǎn)經(jīng)紀(jì)服務(wù)合同
- 放射科護理常規(guī)
- 2024年大宗貿(mào)易合作共贏協(xié)議書模板
- 初中數(shù)學(xué)教學(xué)經(jīng)驗分享
- 新聞記者證600道考試題-附標(biāo)準(zhǔn)答案
- 2024年公開招聘人員報名資格審查表
- TSG ZF001-2006《安全閥安全技術(shù)監(jiān)察規(guī)程》
- 長螺旋鉆孔壓灌樁工程勞務(wù)清包合同(范本)
- 中考語文二輪復(fù)習(xí):記敘文閱讀物象的作用(含練習(xí)題及答案)
- 老年外科患者圍手術(shù)期營養(yǎng)支持中國專家共識(2024版)
- 子宮畸形的超聲診斷
評論
0/150
提交評論