1438
备注:
|
2225
|
删除的内容标记成这样。 | 加入的内容标记成这样。 |
行号 8: | 行号 8: |
=== imadjust === | |
行号 22: | 行号 23: |
=== 对数和对比度拉伸 === | |
行号 26: | 行号 28: |
另外一种变换函数叫作对比度拉伸函数,公式如下:{{{ g = 1 ./ (1 + (m ./ (double(f)+eps) ).^E ) }}}变换函数如下图所示: |
|
行号 27: | 行号 33: |
例如:{{{ g = im2uint8(mat2gray(log(1+double(f)))); imshow(g); }}} === 处理可变数量的参数和返回值 === 要处理可变数量的输入输出,用nargin返回调用函数的参数个数,nargout返回值的个数。比如{{{ number = nargin number = nargout }}}函数nargchk用于检查传递参数的个数是否正确{{{ msg = nargchk(low, high, number) }}}当number小于low时,返回参数太少,当number大于high时返回参数太多,当number介于low和high之间,返回一个空矩阵。比如{{{ error(nargchk(2, 3, nargin)) }}} |
图像的亮度变换
亮度变换是指对每一个像素用同一个函数将原像素值进行运算,用运算结果代替原来的值。
亮度变换的函数与像素的位置无关,可以表示为:s = T(r),其中r为原始图像上像素的值,s是经过变换后的像素的值,T是亮度变换函数。
1. imadjust
在matlab中可以使用imadjust函数实现简单的像素亮度变换
g = imadjust(f, [low_in high_in], [low_out high_out], gamma)
f是要处理的图像。low_in和high_in是输入像素值的范围,low_out和high_out是输出像素值的范围,当范围取[ ]时就是默认[0 1]。gamma是曲线的形状,可以省略,默认是1。
例如
g1 = imadjust(f, [0 1], [1 0]); g2 = imadjust(f, [0.5 0.75], [0 1]); g3 = imadjust(f, [ ], [ ], 2);
图像翻转还可以用一个专门的函数来完成
g = imcomplement(f);
2. 对数和对比度拉伸
更复杂的变换需要用matlab的矩阵运算来实现。对数变换的公式如下:
g = c * log(1 + double(f));
另外一种变换函数叫作对比度拉伸函数,公式如下:
g = 1 ./ (1 + (m ./ (double(f)+eps) ).^E )
变换函数如下图所示:
例如:
g = im2uint8(mat2gray(log(1+double(f)))); imshow(g);
3. 处理可变数量的参数和返回值
要处理可变数量的输入输出,用nargin返回调用函数的参数个数,nargout返回值的个数。比如
number = nargin number = nargout
函数nargchk用于检查传递参数的个数是否正确
msg = nargchk(low, high, number)
当number小于low时,返回参数太少,当number大于high时返回参数太多,当number介于low和high之间,返回一个空矩阵。比如
error(nargchk(2, 3, nargin))
- 图像像素的灰度变换有哪些操作?会带来什么效果?
- 图像间的运算有哪些?它们有什么应用?
- 什么是直方图?利用直方图如何进行增强?
- 如何进行空域的卷积?有哪些模板?可以产生什么效果?
- 非线性滤波有哪些方法?各自可以产生什么效果?