图像处理-基本算法之线性变换
来源:互联网 发布:h&m淘宝 编辑:程序博客网 时间:2024/06/06 09:47
线性变换是灰度变换的一种,图像的灰度变换通过建立灰度映射来调整源图像的灰度从而达到图像增强的目的。
其公式可以表示为y(x, y) = k * x(x, y) + b;其中y(x, y)表示目标像素值,x(x, y)表示源像素值,k表示斜率,b表示截距。
1)当k>1时,可用于增加图像的对比度。图像的像素值在变换后全部增大,整体显示效果被增强。
2)当k=1时,常用于调节图像亮度。
3)当0<k<1时,效果与k>1时刚刚相反,图像的对比度和整体效果都被削弱。
4)当k<0时,源图像较亮的区域变暗,而较暗的区域会变亮。此时可以使函数中的k=-1,d=255让图像实现反色效果。
代码如下:
- /******************************************************************************
- * 作用: 线性变换函数
- * 参数: pDst 输出图像的像素数组
- * 参数: pSrc 原始图像的像素数组
- * 参数: nWidth 原始图像宽度
- * 参数: nHeight 原始图像高度
- * 参数: slope 线性函数的斜率
- * 参数: inter 线性函数的截距
- * 备注: 此函数对于彩色图同样适用
- ******************************************************************************/
- int LineTrans(BYTE* pDst,BYTE* pSrc, int nWidth,int nHeight, double slope,double inter)
- {
- if (!pSrc || !pDst)
- {
- return EXIT_FAILURE;
- }
- // 灰度映射表
- BYTE map[256];
- // 保存运算后的临时值
- double dTemp;
- int i, j;
- for (i = 0; i < 256; i++)
- {
- // 计算当前像素变换后的值
- dTemp = slope * i + inter;
- // 如果超界则修改其值
- 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;
- }
- 图像处理-基本算法之线性变换
- 图像基本变换---图像线性变换
- 数字图像处理MFC程序设计之灰度图像的线性变换
- 图像处理-基本算法之对数变换
- 图像处理-基本算法之指数变换
- 图像处理-基本算法之阈值变换
- 图像处理-基本算法之灰度拉伸
- 图像处理-基本算法之灰度均衡
- 图像处理 灰度的线性变换
- 图像处理基本算法
- 图像处理基本算法
- 图像处理基本算法
- 图像处理基本算法
- OpenCV 基于RGB三原色的基本线性变换 改变图像颜色和亮度 对比度增强算法
- 图像处理(4)_灰度线性变换
- [mtalab图像处理] 灰度的线性变换
- Win8Metro(C#)数字图像处理--2.8图像线性变换
- 图像处理算法基础(二)---线性变换和伽马变换
- hdoj1231
- View類的層次結構
- ASIHTTPRequest 一款强大的HTTP包装开源项目
- 最小生成树(浙大研究生复试题目)
- 安装EntityFramework方法
- 图像处理-基本算法之线性变换
- Iphone开发-NSRunLoop概述和原理
- 重载抽取运算f符<<
- SQL Server 2005 笔记(第二章:物理查询处理)
- 点击 UITextView 输入文字,光标都从最初点开始
- serialize
- 生成android使用的BKS证书
- InvalidateRect()与Invalidate()
- 2012-02-08 00:39 iOS Programming – 触摸事件处理