fvalue = (pdata[y][i] + pdata[y][i + 1]) / 2; pdata[y][nhalfw + i] -= fvalue; fvalue = (pdata[y][nhalfw - 1] + pdata[y][nhalfw - 2]) / 2; pdata[y][nwi

Similar documents
威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

CWP156.pdf

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

untitled

说 : 荀 子 极 偏 驳, 只 一 句 性 恶, 大 本 已 失 5 朱 熹 说 : 荀 扬 不 惟 说 性 不 是, 从 头 到 底 皆 不 识 6 采 取 的 都 是 这 种 理 论 框 架 另 一 种 理 论 框 架 始 于 20 世 纪 前 期, 这 便 是 诸 子 学 研 究 的 框 架

untitled

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

四、實務實習課程之實習工作日誌(請貼上掃描檔)

FY.DOC

C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

untitled

個 人 的 手, 拉 著 瞎 子 的 手 把 他 帶 往 村 外 的 時 候, 對 於 瞎 子 來 講, 那 個 人 的 手 和 耶 穌 的 手 有 沒 有 區 別? 沒 有! 為 什 麼 沒 有 區 別? 因 為 對 於 一 個 瞎 子 來 說, 手 和 耳 朵 就 是 他 接 觸 世 界, 瞭

c_cpp

如何网上发布新闻南京楼市乱象频出 黄牛党30万单价公开叫卖房号

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

vi 黃 帝 內 經 即 學 即 用 別 做 反 自 然 的 事 053 成 年 人 應 該 斷 奶 055 吃 肉 吃 素 因 人 而 異 057 要 分 清 飢 和 餓 058 生 活 現 代 化 與 本 能 退 化 061 調 神 就 是 調 節 奏 063 想 冬 泳, 先 問 問 自 己

C 1

新版 明解C++入門編

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

Strings

untitled

2016 创 新 医 疗 与 大 健 康 产 业 发 展 暨 国 产 医 疗 仪 器 破 冰 之 役 高 峰 论 坛 ( 最 终 日 程 以 会 议 现 场 为 准 ) 10 月 10 日 09:00-16:40 地 点 : 上 海 光 大 会 展 中 心 09:00-09:25 参 观 2016

新・明解C言語入門編『索引』

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

ebook50-11

C++ 程式設計

untitled

untitled

中 央 大 學 認 知 神 經 科 學 研 究 所 所 長 洪 蘭 說, 有 個 國 小 學 生 指 著 桌 上 的 水 果 : 媽 媽 說 那 些 個 頭 小 的 椪 柑, 不 好 吃, 是 給 菲 傭 吃 的 洪 蘭 很 吃 驚, 她 當 場 剝 了 一 個 小 柑 橘 和 小 學 生 一 人

普 通 公 務 單 位 預 算 目 次 ^ 中 華 民 國 104 年 度 ^ ^ ^ ^ ^ ^ ^ 書 表 名 稱 一 藤 總 說 明. ^ 1 30 二 主 要 表 ( 一 ) 歲 入 來 源 別 預 算 表 ^ ( 二 ) 歲 出 機 關 別 預 算 表 ^ 三 附


(譯本)

Microsoft Word - 01.DOC

Microsoft Word - CPE考生使用手冊 docx

JLX

untitled

全国计算机技术与软件专业技术资格(水平)考试

GB xxxxx00x... III A... II

ZYXM.S2

C/C++语言 - C/C++数据

7

2

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

嘉義市政府暨附(所)屬機關電話禮貌測試實施要點

3.1 num = 3 ch = 'C' 2

多核架构及编程技术

基于ECO的UML模型驱动的数据库应用开发1.doc

概述

職能基準

第3章.doc

提问袁小兵:

chap07.key

untitled

<4D F736F F D204F70656E4356B1E0B3CCB2CEBFBCCAD6B2E1>

Microsoft Word - MP2018_Report_Chi _12Apr2012_.doc

南華大學數位論文

李天命的思考藝術

皮肤病防治.doc

性病防治

中国南北特色风味名菜 _一)

全唐诗24

: ( -. [ ~ ] ) [, ],,,, [ ] [ ] [ ],,, :,, [,, ], ;, ;,,,, ~ %,,. [ ],,( ) ; ( ),..

<4D F736F F D20B2C43032B3B920B8EAAEC6ABACBA41BB50AAEDA5DCA6A12E646F63>

ebook111-4

BOOL EnumWindows(WNDENUMPROC lparam); lpenumfunc, LPARAM (Native Interface) PowerBuilder PowerBuilder PBNI 2

SP_ SP_03 JAVA...6 SP_10 SQL...8 SP_ SP_ SP_ SP_ SP_ SP_ SP_ SP_04.NET...33 SP_02 C...37 SP_05

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

绝妙故事

ebook 86-15

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

509 (ii) (iii) (iv) (v) 200, , , , C 57

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

untitled

投稿類別:其他類

C/C++ 语言 - 循环

全唐诗28

文档 3

号 决 议, 邀 请 收 到 大 会 长 期 邀 请 参 加 其 主 持 下 召 开 的 一 切 国 际 会 议 的 会 议 和 工 作 的 各 组 织 代 表, 以 观 察 员 身 分 参 加 ; 按 照 大 会 一 九 七 四 年 十 二 月 十 曰 第 3280(Х Х 1Х ) 号 决 议,

眼病防治

中国南北特色风味名菜 _八)

穨學前教育課程指引.PDF

untitled

Microsoft PowerPoint - How_To_Accelerate_OpenCV_Applications_using_Vivado_HLS-CF-Andy-v2 [只读]

概述

图 书 在 版 编 目 ( 犆 犐 犘 ) 数 据 英 汉 汉 英 心 词 汇 手 册 / 苏 云 编. 上 海 : 上 海 外 语 教 育 出 版 社,2016 ( 外 教 社 英 汉 汉 英 百 科 词 汇 手 册 系 列 ) ISBN Ⅰ.1 英 Ⅱ.1 苏

引言

鞋楦設計技術

javaexample-02.pdf

C/C++语言 - 分支结构

epub83-1

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ

MWO Catalogue_2018


1. 软 件 核 武 器 CTreeNode 基 本 原 理 以 下 详 细 介 绍 这 一 技 术 的 基 本 原 理 -CTreeNode 这 是 一 种 数 据 结 构, 类 似 于 CObject 存 在 于 内 存 中 1. 能 够 以 树 形 的 方 式 嵌 套 存 贮 非 常 复 杂

2 Java 语 言 程 序 设 计 教 程 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

国民体质监测相关名词释义.doc

Microsoft Word - onlineHelpC.doc

Transcription:

#include <iostream.h> #include <cv.h> #include <highgui.h> // 二维离散小波变换 ( 单通道浮点图像 ) void DWT(IplImage *pimage, int nlayer) // 执行条件 if (pimage) if (pimage->nchannels == 1 && pimage->depth == IPL_DEPTH_32F && ((pimage->width >> nlayer) << nlayer) == pimage->width && ((pimage->height >> nlayer) << nlayer) == pimage->height) int i, x, y, n; float fvalue = 0; float fradius = sqrt(2.0f); int nwidth = pimage->width; int nheight = pimage->height; int nhalfw = nwidth / 2; int nhalfh = nheight / 2; float **pdata = new float*[pimage->height]; float *prow = new float[pimage->width]; float *pcolumn = new float[pimage->height]; for (i = 0; i < pimage->height; i++) pdata[i] = (float*) (pimage->imagedata + pimage->widthstep * i); // 多层小波变换 for (n = 0; n < nlayer; n++, nwidth /= 2, nheight /= 2, nhalfw /= 2, nhalfh /= 2) // 水平变换 for (y = 0; y < nheight; y++) // 奇偶分离 memcpy(prow, pdata[y], sizeof(float) * nwidth); x = i * 2; pdata[y][i] = prow[x]; pdata[y][nhalfw + i] = prow[x + 1]; // 提升小波变换 for (i = 0; i < nhalfw - 1; i++)

fvalue = (pdata[y][i] + pdata[y][i + 1]) / 2; pdata[y][nhalfw + i] -= fvalue; fvalue = (pdata[y][nhalfw - 1] + pdata[y][nhalfw - 2]) / 2; pdata[y][nwidth - 1] -= fvalue; fvalue = (pdata[y][nhalfw] + pdata[y][nhalfw + 1]) / 4; pdata[y][0] += fvalue; for (i = 1; i < nhalfw; i++) fvalue = (pdata[y][nhalfw + i] + pdata[y][nhalfw + i - 1]) / 4; pdata[y][i] += fvalue; pdata[y][i] *= fradius; pdata[y][nhalfw + i] /= fradius; // 垂直变换 for (x = 0; x < nwidth; x++) // 奇偶分离 y = i * 2; pcolumn[i] = pdata[y][x]; pcolumn[nhalfh + i] = pdata[y + 1][x]; for (i = 0; i < nheight; i++) pdata[i][x] = pcolumn[i]; // 提升小波变换 for (i = 0; i < nhalfh - 1; i++) fvalue = (pdata[i][x] + pdata[i + 1][x]) / 2; pdata[nhalfh + i][x] -= fvalue; fvalue = (pdata[nhalfh - 1][x] + pdata[nhalfh - 2][x]) / 2; pdata[nheight - 1][x] -= fvalue; fvalue = (pdata[nhalfh][x] + pdata[nhalfh + 1][x]) / 4; pdata[0][x] += fvalue;

for (i = 1; i < nhalfh; i++) fvalue = (pdata[nhalfh + i][x] + pdata[nhalfh + i - 1][x]) / 4; pdata[i][x] += fvalue; pdata[i][x] *= fradius; pdata[nhalfh + i][x] /= fradius; delete[] pdata; delete[] prow; delete[] pcolumn; // 二维离散小波恢复 ( 单通道浮点图像 ) void IDWT(IplImage *pimage, int nlayer) // 执行条件 if (pimage) if (pimage->nchannels == 1 && pimage->depth == IPL_DEPTH_32F && ((pimage->width >> nlayer) << nlayer) == pimage->width && ((pimage->height >> nlayer) << nlayer) == pimage->height) int i, x, y, n; float fvalue = 0; float fradius = sqrt(2.0f); int nwidth = pimage->width >> (nlayer - 1); int nheight = pimage->height >> (nlayer - 1); int nhalfw = nwidth / 2; int nhalfh = nheight / 2; float **pdata = new float*[pimage->height]; float *prow = new float[pimage->width]; float *pcolumn = new float[pimage->height]; for (i = 0; i < pimage->height; i++) pdata[i] = (float*) (pimage->imagedata + pimage->widthstep * i);

// 多层小波恢复 for (n = 0; n < nlayer; n++, nwidth *= 2, nheight *= 2, nhalfw *= 2, nhalfh *= 2) // 垂直恢复 for (x = 0; x < nwidth; x++) pdata[i][x] /= fradius; pdata[nhalfh + i][x] *= fradius; // 提升小波恢复 fvalue = (pdata[nhalfh][x] + pdata[nhalfh + 1][x]) / 4; pdata[0][x] -= fvalue; for (i = 1; i < nhalfh; i++) fvalue = (pdata[nhalfh + i][x] + pdata[nhalfh + i - 1][x]) / 4; pdata[i][x] -= fvalue; for (i = 0; i < nhalfh - 1; i++) fvalue = (pdata[i][x] + pdata[i + 1][x]) / 2; pdata[nhalfh + i][x] += fvalue; fvalue = (pdata[nhalfh - 1][x] + pdata[nhalfh - 2][x]) / 2; pdata[nheight - 1][x] += fvalue; // 奇偶合并 y = i * 2; pcolumn[y] = pdata[i][x]; pcolumn[y + 1] = pdata[nhalfh + i][x]; for (i = 0; i < nheight; i++) pdata[i][x] = pcolumn[i]; // 水平恢复 for (y = 0; y < nheight; y++)

pdata[y][i] /= fradius; pdata[y][nhalfw + i] *= fradius; // 提升小波恢复 fvalue = (pdata[y][nhalfw] + pdata[y][nhalfw + 1]) / 4; pdata[y][0] -= fvalue; for (i = 1; i < nhalfw; i++) fvalue = (pdata[y][nhalfw + i] + pdata[y][nhalfw + i - 1]) / 4; pdata[y][i] -= fvalue; for (i = 0; i < nhalfw - 1; i++) fvalue = (pdata[y][i] + pdata[y][i + 1]) / 2; pdata[y][nhalfw + i] += fvalue; fvalue = (pdata[y][nhalfw - 1] + pdata[y][nhalfw - 2]) / 2; pdata[y][nwidth - 1] += fvalue; // 奇偶合并 x = i * 2; prow[x] = pdata[y][i]; prow[x + 1] = pdata[y][nhalfw + i]; memcpy(pdata[y], prow, sizeof(float) * nwidth); delete[] pdata; delete[] prow; delete[] pcolumn; void main() // 小波变换层数 int nlayer =1; // 输入彩色图像 IplImage *psrc = cvloadimage("lena.bmp", CV_LOAD_IMAGE_COLOR); // 计算小波图象大小

CvSize size = cvgetsize(psrc); if ((psrc->width >> nlayer) << nlayer!= psrc->width) size.width = ((psrc->width >> nlayer) + 1) << nlayer; if ((psrc->height >> nlayer) << nlayer!= psrc->height) size.height = ((psrc->height >> nlayer) + 1) << nlayer; // 创建小波图象 IplImage *pwavelet = cvcreateimage(size, IPL_DEPTH_32F, psrc->nchannels); if (pwavelet) // 小波图象赋值 cvsetimageroi(pwavelet, cvrect(0, 0, psrc->width, psrc->height)); cvconvertscale(psrc, pwavelet, 1, -128); cvresetimageroi(pwavelet); // 彩色图像小波变换 IplImage *pimage = cvcreateimage(cvgetsize(pwavelet), IPL_DEPTH_32F, 1); if (pimage) for (int i = 1; i <= pwavelet->nchannels; i++) cvsetimagecoi(pwavelet, i); cvcopy(pwavelet, pimage, NULL); // 二维离散小波变换 DWT(pImage, nlayer); // 二维离散小波恢复 // IDWT(pImage, nlayer); cvcopy(pimage, pwavelet, NULL); cvsetimagecoi(pwavelet, 0); cvreleaseimage(&pimage); // 小波变换图象 cvsetimageroi(pwavelet, cvrect(0, 0, psrc->width, psrc->height)); cvconvertscale(pwavelet, psrc, 1, 128); cvresetimageroi(pwavelet); // 本行代码有点多余, 但有利用养成良好的编程习惯 cvreleaseimage(&pwavelet); // 显示图像 psrc cvnamedwindow("yuhuan",0); cvshowimage("yuhuan",psrc);

cvwaitkey(10000); cvreleaseimage(&psrc);