图像处理-基本算法之幂次变换
来源:互联网 发布:seo技术到底是什么 编辑:程序博客网 时间:2024/06/03 21:38
幂次变换的基本表达式为:y=cxr+b
其中c、r均为正数。与对数变换相同,幂次变换将部分灰度区域映射到更宽的区域中。当r=1时,幂次变换转变为线性变换。
(1) 当r<0时,变换函数曲线在正比函数上方。此时扩展低灰度级,压缩高灰度级,使图像变亮。这一点与对数变换十分相似。
(2) 当r>0时,变换函数曲线在正比函数下方。此时扩展高灰度级,压缩低灰度级,使图像变暗。
代码如下:
[cpp] view plaincopyprint?
- /******************************************************************************
- * 作用: 幂次变换函数
- * 参数: pDst 输出图像的像素数组
- * 参数: pSrc 原始图像的像素数组
- * 参数: nWidth 原始图像宽度
- * 参数: nHeight 原始图像高度
- * 参数: b 控制参数,表示曲线的上下偏移量
- * 参数: c 控制参数,表示曲线的弯曲程度
- * 参数: r 控制参数,表示函数的幂次
- * 备注: 此函数对于彩色图同样适用
- ******************************************************************************/
- int PowerTrans(BYTE* pDst, BYTE* pSrc, int nWidth, int nHeight, double b, double c, double r)
- {
- if (!pSrc || !pDst)
- {
- return EXIT_FAILURE;
- }
- // 映射表,用于256种灰度变换后的值
- BYTE map[256];
- // 保存运算后的临时值
- double dTemp;
- int i, j;
- for (i = 0; i < 256; i++)
- {
- // 计算当前像素变换后的值
- dTemp = c * pow(i / 255.0, r) * 255 + b;
- // 如果超界则修改其值
- if (dTemp < 0)
- dTemp = 0.0;
- else if (dTemp > 255)
- dTemp = 255;
- // 四舍五入
- map[i] = int(dTemp + 0.5);
- }
- for (i = 0; i < nWidth * nHeight; i++)
- {
- for (j = 0; j < 4; j++)
- pDst[i*4+j] = map[ pSrc[i*4+j] ];
- }
- return EXIT_SUCCESS;
- }
- 图像处理-基本算法之幂次变换
- 图像处理-基本算法之对数变换
- 图像处理-基本算法之指数变换
- 图像处理-基本算法之阈值变换
- 图像处理基本算法--仿射变换
- 图像处理基本算法 Hough变换
- 图像处理-基本算法之线性变换
- 图像处理-基本算法之灰度拉伸
- 图像处理-基本算法之灰度均衡
- 图像处理之霍夫变换(直线检测算法)
- 图像处理之霍夫变换圆检测算法
- 图像处理之基于采样距离变换算法
- 图像处理之霍夫变换(直线检测算法)
- 图像处理之霍夫变换(直线检测算法)
- 图像处理之霍夫变换(直线检测算法)
- 图像处理之霍夫变换(直线检测算法)
- 图像处理之霍夫变换圆检测算法
- 图像处理之霍夫变换圆检测算法
- subview自适应superview的frame autosizingMask
- dede:channelartlist
- 图像处理-基本算法之对数变换
- 关于虚拟主机的CC攻击
- C++文件操作详解
- 图像处理-基本算法之幂次变换
- 一个mfc实现的简单计算功能
- JAVA中final的作用及意思??
- Other Usage of Ant
- 图像处理-基本算法之指数变换
- 图像处理-基本算法之阈值变换
- 在C++中实现变长数组
- 黑马程序员_TCP-客户端并发上传图片
- 科技公司软件工程师薪水排行 苹果居第5,看看你公司的差距