亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mydipview.cpp

?? 圖像處理與識別實用案例精選 圖像處理與識別實用案例精選
?? CPP
字號:
// MyDIPView.cpp : implementation of the CMyDIPView class
//

#include "stdafx.h"
#include "MyDIP.h"

#include "MyDIPDoc.h"
#include "MyDIPView.h"
#include "math.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


/*************************************************************************
 *
 * 函數(shù)名稱:
 *   WALSH()
 *
 * 參數(shù):
 *   double * f				- 指向時域值的指針
 *   double * F				- 指向頻域值的指針
 *   r						-2的冪數(shù)
 *
 * 返回值:
 *   無。
 *
 * 說明:
 *   該函數(shù)用來實現(xiàn)快速沃爾什-哈達瑪變換。
 *
 ************************************************************************/

VOID WINAPI WALSH(double *f, double *F, int r)
{
	// 沃爾什-哈達瑪變換點數(shù)
	LONG	count;
	
	// 循環(huán)變量
	int		i,j,k;
	
	// 中間變量
	int		bfsize,p;
	
	double *X1,*X2,*X;
	
	// 計算快速沃爾什變換點數(shù)
	count = 1 << r;
	
	// 分配運算所需的數(shù)組
	X1 = new double[count];
	X2 = new double[count];
	
	// 將時域點寫入數(shù)組X1
	memcpy(X1, f, sizeof(double) * count);
	
	// 蝶形運算
	for(k = 0; k < r; k++)
	{
		for(j = 0; j < 1<<k; j++)
		{
			bfsize = 1 << (r-k);
			for(i = 0; i < bfsize / 2; i++)
			{
				p = j * bfsize;
				X2[i + p] = X1[i + p] + X1[i + p + bfsize / 2];
				X2[i + p + bfsize / 2] = X1[i + p] - X1[i + p + bfsize / 2];
			}
		}
		
		// 互換X1和X2  
		X = X1;
		X1 = X2;
		X2 = X;
	}
	
	// 調(diào)整系數(shù)
	for(j = 0; j < count; j++)
	{
		p = 0;
		for(i = 0; i < r; i++)
		{
			if (j & (1<<i))
			{
				p += 1 << (r-i-1);
			}
		}

		F[j] = X1[p] / count;
	}
	
	// 釋放內(nèi)存
	delete X1;
	delete X2;
}


/*************************************************************************
 *
 * 函數(shù)名稱:
 *   DIBWalsh1()
 *
 * 參數(shù):
 *   LPSTR lpDIBBits    - 指向源DIB圖像指針
 *   LONG  lWidth       - 源圖像寬度(象素數(shù))
 *   LONG  lHeight      - 源圖像高度(象素數(shù))
 *
 * 返回值:
 *   BOOL               - 成功返回TRUE,否則返回FALSE。
 *
 * 說明:
 *   該函數(shù)用來對圖像進行沃爾什-哈達瑪變換。于上面不同的是,此處是將二維
 * 矩陣轉(zhuǎn)換成一個列向量,然后對該列向量進行一次一維沃爾什-哈達瑪變換。
 *
 ************************************************************************/

BOOL WINAPI DIBWalsh1(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
	
	// 指向源圖像的指針
	unsigned char*	lpSrc;
	
	// 循環(huán)變量
	LONG	i;
	LONG	j;
	
	// 進行付立葉變換的寬度和高度(2的整數(shù)次方)
	LONG	w;
	LONG	h;
	
	// 中間變量
	double	dTemp;
	
	int		wp;
	int		hp;
	
	// 圖像每行的字節(jié)數(shù)
	LONG	lLineBytes;
	
	// 計算圖像每行的字節(jié)數(shù)
	lLineBytes = WIDTHBYTES(lWidth * 8);
	
	// 賦初值
	w = 1;
	h = 1;
	wp = 0;
	hp = 0;
	
	// 計算進行離散余弦變換的寬度和高度(2的整數(shù)次方)
	while(w * 2 <= lWidth)
	{
		w *= 2;
		wp++;
	}
	
	while(h * 2 <= lHeight)
	{
		h *= 2;
		hp++;
	}
	
	// 分配內(nèi)存
	double *f = new double[w * h];
	double *F = new double[w * h];
	
	// 列
	for(i = 0; i < w; i++)
	{
		// 行
		for(j = 0; j < h; j++)
		{
			// 指向DIB第j行,第i個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - j) + i;
			
			// 給時域賦值
			f[j + i * w] = *(lpSrc);
		}
	}
	
	// 調(diào)用快速沃爾什-哈達瑪變換
	WALSH(f, F, wp + hp);
	
	// 列
	for(i = 0; i < w; i++)
	{
		// 行
		for(j = 0; j < h; j++)
		{
			// 計算頻譜
			dTemp = fabs(F[i * w + j] * 1000);
			
			// 判斷是否超過255
			if (dTemp > 255)
			{
				// 對于超過的,直接設(shè)置為255
				dTemp = 255;
			}
			
			// 指向DIB第j行,第i個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (lHeight - 1 - j) + i;
			
			// 更新源圖像
			* (lpSrc) = (BYTE)(dTemp);
		}
	}
	
	//釋放內(nèi)存
	delete f;
	delete F;

	// 返回
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView

IMPLEMENT_DYNCREATE(CMyDIPView, CScrollView)

BEGIN_MESSAGE_MAP(CMyDIPView, CScrollView)
	//{{AFX_MSG_MAP(CMyDIPView)
	ON_COMMAND(ID_MENUITEM32778, OnMenuitem32778)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView construction/destruction

CMyDIPView::CMyDIPView()
{
	// TODO: add construction code here

}

CMyDIPView::~CMyDIPView()
{
}

BOOL CMyDIPView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CScrollView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView drawing

void CMyDIPView::OnDraw(CDC* pDC)
{   
	CMyDIPDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if(pDoc->m_hDIB == NULL)
		return ;
	// TODO: add draw code for native data here
	int i,j;
    unsigned char *lpSrc;
	LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->m_hDIB);
	int cxDIB = (int) ::DIBWidth(lpDIB);         // Size of DIB - x
	int cyDIB = (int) ::DIBHeight(lpDIB);        // Size of DIB - y
	LPSTR lpDIBBits=::FindDIBBits (lpDIB);
	// 計算圖像每行的字節(jié)數(shù)
	long lLineBytes = WIDTHBYTES(cxDIB * 8);
	// 每行
	for(i = 0; i < cyDIB; i++)
	{
		// 每列
		for(j = 0; j < cxDIB; j++)
		{
			// 指向DIB第i行,第j個象素的指針
			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j;
			// 計算新的灰度值
			//*(lpSrc) = BYTE(255-*lpSrc);
		}
	}
	::GlobalUnlock((HGLOBAL) pDoc->m_hDIB);
	CRect rect(0,0,cxDIB,cyDIB), rcDIB(0,0,cxDIB,cyDIB);
	::PaintDIB(pDC->m_hDC, &rect, pDoc->m_hDIB, &rcDIB, pDoc->m_palDIB);
}

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView printing

BOOL CMyDIPView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CMyDIPView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CMyDIPView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView diagnostics

#ifdef _DEBUG
void CMyDIPView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CMyDIPView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}

CMyDIPDoc* CMyDIPView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDIPDoc)));
	return (CMyDIPDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMyDIPView message handlers

void CMyDIPView::OnSize(UINT nType, int cx, int cy)
{
	CScrollView::OnSize(nType, cx, cy);
}

void CMyDIPView::OnInitialUpdate()
{
	CScrollView::OnInitialUpdate();

	SetScrollSizes(MM_TEXT, GetDocument()->m_sizeDoc);
}


//對比度拉伸
//DEL void CMyDIPView::OnMenuitem32777() 
//DEL {
//DEL 	
//DEL 	// 獲取文檔
//DEL 	CMyDIPDoc* pDoc = GetDocument();
//DEL 	int i,j;
//DEL 	int r1=60,r2=200;
//DEL 	double k=1.5;
//DEL     unsigned char *lpSrc;	
//DEL 	ASSERT_VALID(pDoc);
//DEL 	if(pDoc->m_hDIB == NULL)
//DEL 		return ;
//DEL 	LPSTR lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->m_hDIB);
//DEL 	LPSTR lpDIBBits=::FindDIBBits (lpDIB);
//DEL 	int cxDIB = (int) ::DIBWidth(lpDIB);         // Size of DIB - x
//DEL 	int cyDIB = (int) ::DIBHeight(lpDIB);        // Size of DIB - y
//DEL 	long lLineBytes = WIDTHBYTES(cxDIB * 8);     // 計算圖像每行的字節(jié)數(shù)
//DEL 	// 每行
//DEL 	for(i = 0; i < cyDIB; i++)
//DEL 	{
//DEL 		// 每列
//DEL 		for(j = 0; j < cxDIB; j++)
//DEL 		{
//DEL 			// 指向DIB第i行,第j個象素的指針
//DEL 			lpSrc = (unsigned char*)lpDIBBits + lLineBytes * (cyDIB - 1 - i) + j;
//DEL 			// 計算新的灰度值
//DEL 			if(*lpSrc<r1) *lpSrc=BYTE(*lpSrc/k);
//DEL 			else if(*lpSrc<r2) *lpSrc= BYTE((*lpSrc-r1)*k+r1/k);
//DEL 			else *lpSrc=BYTE((*lpSrc-r2)/k+255-(255-r2)/k);
//DEL 		}
//DEL 	}
//DEL 	::GlobalUnlock((HGLOBAL) pDoc->m_hDIB);
//DEL     Invalidate(TRUE);
//DEL }

void CMyDIPView::OnMenuitem32778() 
{
	// 圖像沃爾什-哈達瑪變換
	
	// 獲取文檔
	CMyDIPDoc* pDoc = GetDocument();
	
	// 指向DIB的指針
	LPSTR	lpDIB;
	
	// 指向DIB象素指針
	LPSTR    lpDIBBits;
	
	// 鎖定DIB
	lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());
	
	// 找到DIB圖像象素起始位置
	lpDIBBits = ::FindDIBBits(lpDIB);
	
	// 判斷是否是8-bpp位圖(這里為了方便,只處理8-bpp位圖的沃爾什-哈達瑪變換,其它的可以類推)
	if (::DIBNumColors(lpDIB) != 256)
	{
		// 提示用戶
		MessageBox("目前只支持256色位圖的沃爾什-哈達瑪變換!", "系統(tǒng)提示" ,
			MB_ICONINFORMATION | MB_OK);
		
		// 解除鎖定
		::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
		
		// 返回
		return;
	}
	
	// 更改光標形狀
	BeginWaitCursor();
	
	// 調(diào)用DIBWalsh()或者DIBWalsh1()函數(shù)進行變換
	if (::DIBWalsh1(lpDIBBits, ::DIBWidth(lpDIB), ::DIBHeight(lpDIB)))
	{
		
		// 設(shè)置臟標記
		pDoc->SetModifiedFlag(TRUE);
		
		// 更新視圖
		pDoc->UpdateAllViews(NULL);
	}
	else
	{
		// 提示用戶
		MessageBox("分配內(nèi)存失敗!", "系統(tǒng)提示" , MB_ICONINFORMATION | MB_OK);
	}
	
	// 解除鎖定
	::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
	
	// 恢復(fù)光標
	EndWaitCursor();
	
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美网站大全在线观看| 精品一二三四在线| 国产日韩精品视频一区| 精品sm捆绑视频| 精品国产一区二区三区久久久蜜月| 91精品福利在线一区二区三区| 欧美人狂配大交3d怪物一区| 欧美精品粉嫩高潮一区二区| 欧美一区二区视频在线观看2022| 日韩一区二区三区四区| 亚洲精品一区在线观看| 久久免费午夜影院| 中文av一区特黄| 亚洲精品一卡二卡| 五月天久久比比资源色| 男女男精品视频| 国产成人精品免费一区二区| 成人高清在线视频| 国产91在线观看丝袜| 精品一区二区影视| 一区二区三区资源| 舔着乳尖日韩一区| 美国毛片一区二区三区| 国产精品一卡二卡| av一本久道久久综合久久鬼色| 日韩欧美二区三区| 久久婷婷成人综合色| 自拍偷在线精品自拍偷无码专区| 亚洲线精品一区二区三区| 美女视频黄 久久| av午夜精品一区二区三区| 欧美午夜影院一区| 久久亚洲春色中文字幕久久久| 中文字幕综合网| 久久99精品一区二区三区| 99国产一区二区三精品乱码| 91麻豆精品国产91久久久| 国产欧美日韩在线| 人人狠狠综合久久亚洲| 色综合久久久久综合| 精品国产乱码久久久久久图片| 亚洲视频精选在线| 国产在线精品免费| 欧美久久一二区| 亚洲天堂福利av| 国产成人精品影视| 日韩片之四级片| 亚洲www啪成人一区二区麻豆| 国产suv精品一区二区6| 日韩欧美激情在线| 五月天一区二区三区| 99久久久无码国产精品| 欧美videos中文字幕| 亚洲永久精品国产| 99在线视频精品| 日本一区二区三区电影| 久久99久久久久久久久久久| 欧美日韩精品一区二区三区四区 | 亚洲已满18点击进入久久| 久久国产三级精品| 欧美色国产精品| 亚洲视频一区在线| 99久久精品国产网站| 中文字幕成人在线观看| 国产原创一区二区三区| 欧美一区二区人人喊爽| 午夜视频一区二区| 欧美日本在线播放| 五月天婷婷综合| 欧美精品久久久久久久多人混战 | 视频一区视频二区中文| 色综合久久久久久久| 亚洲精品国产a| 欧美在线观看一二区| 怡红院av一区二区三区| 色综合欧美在线视频区| 国产精品国产自产拍高清av| 成人一区二区视频| 中文字幕制服丝袜成人av| 成人av在线播放网址| 日本一区二区综合亚洲| 99精品国产热久久91蜜凸| 亚洲视频免费观看| 日本丰满少妇一区二区三区| 亚洲免费在线看| 欧美日韩精品三区| 蜜桃视频在线一区| 国产欧美日韩在线观看| 一本到三区不卡视频| 亚洲午夜电影网| 日韩三区在线观看| 国产福利视频一区二区三区| 国产精品国产精品国产专区不蜜| 91蝌蚪porny| 蜜臀精品一区二区三区在线观看| 久久女同性恋中文字幕| 99久久夜色精品国产网站| 亚洲国产一区二区三区青草影视| 欧美一区二区三区视频| 国产精品1区2区3区| 亚洲欧美日韩中文播放| 7777精品伊人久久久大香线蕉最新版 | 国产丝袜欧美中文另类| 97aⅴ精品视频一二三区| 丝袜脚交一区二区| 久久精品免费在线观看| 91丨九色丨蝌蚪富婆spa| 亚洲国产精品自拍| 久久久久久夜精品精品免费| 色综合久久中文综合久久牛| 青青青伊人色综合久久| 国产精品久久夜| 777精品伊人久久久久大香线蕉| 国产成人免费在线观看| 亚洲福利一区二区| 国产女同性恋一区二区| 欧美一区二区三区影视| 91一区在线观看| 精品一区二区久久久| 亚洲综合av网| 国产欧美一区二区三区沐欲| 欧美精品第1页| 91丨porny丨在线| 国产69精品久久777的优势| 日韩电影一区二区三区| 亚洲免费观看高清完整版在线观看熊 | 中文字幕+乱码+中文字幕一区| 欧美精品高清视频| 91精品福利视频| 国产91色综合久久免费分享| 青娱乐精品视频在线| 亚洲午夜精品在线| 亚洲激情综合网| 国产日本一区二区| 精品国产亚洲在线| 欧美一级夜夜爽| 91精品国产综合久久福利软件| 色屁屁一区二区| 一本大道久久a久久精二百 | 日日夜夜精品视频天天综合网| 亚洲欧洲色图综合| 国产精品久久夜| 自拍偷拍欧美激情| 亚洲日本va在线观看| 亚洲图片欧美激情| 18成人在线视频| 成人欧美一区二区三区小说| 国产精品家庭影院| 日韩理论片一区二区| 亚洲精品视频免费观看| 亚洲美女在线一区| 一区二区三区中文字幕精品精品| 亚洲男人的天堂在线aⅴ视频| 日韩美女啊v在线免费观看| 国产精品久久三区| 最新高清无码专区| 曰韩精品一区二区| 午夜精品久久久久久久99水蜜桃| 亚洲一区二区视频在线| 亚洲成人免费视| 麻豆高清免费国产一区| 精品一区二区三区不卡| 成人性生交大片免费看中文网站| 成人一区在线看| 在线观看视频91| 制服丝袜亚洲色图| 久久新电视剧免费观看| 国产精品乱人伦| 一二三区精品视频| 日韩国产精品久久久久久亚洲| 久久爱www久久做| 成人福利在线看| 欧美日韩黄色影视| 精品国产91久久久久久久妲己| 国产网红主播福利一区二区| 亚洲日本乱码在线观看| 丝袜美腿亚洲综合| 国产精品亚洲第一| 欧美综合一区二区三区| 日韩精品一区二区三区中文精品| 国产亚洲一区二区三区四区| 亚洲视频免费看| 另类欧美日韩国产在线| 成人爱爱电影网址| 欧美视频在线一区| 国产日韩欧美高清在线| 亚洲一区二区三区在线看| 美日韩一级片在线观看| 成人va在线观看| 欧美精品少妇一区二区三区| 国产欧美视频一区二区三区| 一区二区三区国产精华| 国产在线麻豆精品观看| 91福利视频久久久久| 久久久美女艺术照精彩视频福利播放| 亚洲欧美色综合| 经典三级视频一区| 欧美日韩你懂的| 中文字幕一区二区日韩精品绯色| 日本视频中文字幕一区二区三区|