资源简介
本程序为C语言编写的基于小波变换的图像去噪程序的源代码,运行速度快,去噪效果还不错,相比其他传统的图像去噪效果要好很多,对于初学小波变换图像去噪的人非常有帮助。
![](http://www.nz998.com/pic/47449.jpg)
代码片段和文件信息
/*
* Wavelet denoise GIMP plugin
*
* colorspace.c
* Copyright 2008 by Marco Rossini
*
* Implements the wavelet denoise code of UFRaw by Udi Fuchs
* which itself bases on the code by Dave Coffin
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation.
*
*/
#include “plugin.h“
void
srgb2ycbcr (float ** fimg int size)
{
/* using JPEG conversion here - expecting all channels to be
* in [0:255] range */
int i;
float y cb cr;
for (i = 0; i < size; i++) {
y = 0.2990 * fimg[0][i] + 0.5870 * fimg[1][i] + 0.1140 * fimg[2][i];
cb = -0.1687 * fimg[0][i] - 0.3313 * fimg[1][i] + 0.5000 * fimg[2][i]
+ 0.5;
cr = 0.5000 * fimg[0][i] - 0.4187 * fimg[1][i] - 0.0813 * fimg[2][i]
+ 0.5;
fimg[0][i] = y;
fimg[1][i] = cb;
fimg[2][i] = cr;
}
}
void
ycbcr2srgb (float **fimg int size int pc)
{
/* using JPEG conversion here - expecting all channels to be
* in [0:255] range */
int i;
static float r g b;
if (pc > 3) { /* single channel colour */
pc -= 4;
for (i = 0; i < size; i++) {
fimg[(pc + 1) % 3][i] = 0.5;
fimg[(pc + 2) % 3][i] = 0.5;
}
} else if (pc > 0) { /* single channel gray */
pc -= 1;
for (i = 0; i < size; i++) {
fimg[(pc + 1) % 3][i] = fimg[pc][i];
fimg[(pc + 2) % 3][i] = fimg[pc][i];
}
return;
}
for (i = 0; i < size; i++) {
r = fimg[0][i] + 1.40200 * (fimg[2][i] - 0.5);
g = fimg[0][i] - 0.34414 * (fimg[1][i] - 0.5)
- 0.71414 * (fimg[2][i] - 0.5);
b = fimg[0][i] + 1.77200 * (fimg[1][i] - 0.5);
fimg[0][i] = r;
fimg[1][i] = g;
fimg[2][i] = b;
}
}
void
srgb2xyz (float **fimg int size)
{
/* fimg in [0:1] sRGB */
int i;
float x y z;
for (i = 0; i < size; i++) {
/* scaling and gamma correction (approximate) */
fimg[0][i] = pow(fimg[0][i] 2.2);
fimg[1][i] = pow(fimg[1][i] 2.2);
fimg[2][i] = pow(fimg[2][i] 2.2);
/* matrix RGB -> XYZ with D65 reference white (www.brucelindbloom.com) */
x = 0.412424 * fimg[0][i] + 0.357579 * fimg[1][i] + 0.180464 * fimg[2][i];
y = 0.212656 * fimg[0][i] + 0.715158 * fimg[1][i] + 0.0721856 * fimg[2][i];
z = 0.0193324 * fimg[0][i] + 0.119193 * fimg[1][i] + 0.950444 * fimg[2][i];
/*
x = 0.412424 * fimg[0][i] + 0.212656 * fimg[1][i] + 0.0193324 * fimg[2][i];
y = 0.357579 * fimg[0][i] + 0.715158 * fimg[1][i] + 0.119193 * fimg[2][i];
z = 0.180464 * fimg[0][i] + 0.0721856 * fimg[1][i] + 0.950444 * fimg[2][i];
*/
fimg[0][i] = x;
fimg[1][i] = y;
fimg[2][i] = z;
}
}
void
xyz2srgb (float **fimg int size int pc)
{
int i;
float r g b;
if (pc > 3) { /* single channel colour */
pc -= 4;
for (i = 0; i < size; i++) {
fimg[(pc + 1) % 3][i] = 0.0;
fimg[(pc + 2) % 3][i] = 0.0;
}
} else if (pc > 0) { /* single channel
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-05-06 12:11 wavelet-denoise-master\
文件 328 2013-05-06 12:11 wavelet-denoise-master\AUTHORS
文件 17992 2013-05-06 12:11 wavelet-denoise-master\COPYING
文件 2540 2013-05-06 12:11 wavelet-denoise-master\ChangeLog
文件 371 2013-05-06 12:11 wavelet-denoise-master\INSTALL
文件 481 2013-05-06 12:11 wavelet-denoise-master\Makefile
文件 2153 2013-05-06 12:11 wavelet-denoise-master\README
文件 402 2013-05-06 12:11 wavelet-denoise-master\THANKS
文件 450 2013-05-06 12:11 wavelet-denoise-master\TRANSLATIONS
目录 0 2013-05-06 12:11 wavelet-denoise-master\po\
文件 1125 2013-05-06 12:11 wavelet-denoise-master\po\Makefile
文件 6329 2013-05-06 12:11 wavelet-denoise-master\po\de.po
文件 5884 2013-05-06 12:11 wavelet-denoise-master\po\et.po
文件 6632 2013-05-06 12:11 wavelet-denoise-master\po\it.po
文件 5839 2013-05-06 12:11 wavelet-denoise-master\po\pl.po
文件 7708 2013-05-06 12:11 wavelet-denoise-master\po\ru.po
目录 0 2013-05-06 12:11 wavelet-denoise-master\src\
文件 792 2013-05-06 12:11 wavelet-denoise-master\src\Makefile
文件 7444 2013-05-06 12:11 wavelet-denoise-master\src\colorspace.c
文件 6310 2013-05-06 12:11 wavelet-denoise-master\src\denoise.c
文件 4942 2013-05-06 12:11 wavelet-denoise-master\src\events.c
文件 16313 2013-05-06 12:11 wavelet-denoise-master\src\interface.c
文件 1187 2013-05-06 12:11 wavelet-denoise-master\src\interface.h
文件 2769 2013-05-06 12:11 wavelet-denoise-master\src\messages.h
文件 3976 2013-05-06 12:11 wavelet-denoise-master\src\plugin.c
文件 2844 2013-05-06 12:11 wavelet-denoise-master\src\plugin.h
文件 4398 2013-05-06 12:11 wavelet-denoise-master\src\wavelet.c
- 上一篇:C++程序设计语言A视频教程 全12讲 地址
- 下一篇:决策树实现算法C语言编写
相关资源
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
- 算符优先语法分析器(C语言编写)
- 基于C语言的密码锁程序
评论
共有 条评论