b) a = 1时,b>0,灰度值上移,亮度增加;b<0,灰度值下移,亮度降低。
c) a = 1,b = 255,图像反相。
Matlab中图像线性变换:
Y = imlincomb(a,x,b); %Y=a*X+b
2、图像的加法运算
C(x,y) = A(x,y) + B(x,y)
图像的叠加方法:
g(x,y) = a*f(x,y)+ b*h(x,y);a+b = 1 matlab中:
A = imread(‘第一幅图’);
B = imread(‘第二幅图’);
C = 0.5*A + 0.5*B;
Imshow(c);
3、减法运算
主要检测同一场景两幅图像之间的变化
G(x,y) = T2(x,y)- T1(x,y)
Matlab中:
A = imread(‘第一幅图’);
B = imread(‘第二幅图’);
C = A - B;
Imshow(c);
4、乘法运算
用二值图像与原图像做乘法,得到需要的子图像。
Z = X .* Y; 要求X和Y的大小、数组元素相同。
Matlab中:
X = imread(‘被点乘的图像’);
Y = zeros(M,N);
Y (70:120, 120:380) = 1;
X = im2double(X);
Z = X.*Y;
Imshow(Z);
5、图像几何运算
(1)图像的镜像:
B = fliplr(A);水平镜像
B = flipud(A);垂直镜像
(2)图像的平移:
A = imread(‘tree.bmp’);
[M N] = size(A);
B = zeros(M, N, class(A));
tx = 100, ty = 50;
B(1+ty:M, 1+tx:N) = A(1:M-ty, 1:N-tx);
imshow(B);
(3)图像的旋转
B = imrotate(A, 60, ‘bilinear’, ‘crop’);截去局部
(4)图像的缩放
B = imresize(A, m);
(5)图像的转置
B = A’
三、图像的变换
1、傅里叶变换
傅里叶变换将图像从空域变换到频域;
傅里叶逆变换将图像从频域变换到空域。
2、一维傅里叶变换(会计算)
逆变换:
Matlab中一维傅里叶变换: Y = fft(X),省略系数1/N
3、二维傅里叶变换(会编程)
Y = fft2(X)
Matlab代码:
A = zeros(300,300);
A (100:200, 100:200) = 1;
B = fft2(A);
C = abs(B);
D = fftshift(C);
D1 = unint8(D);
Imshow(D1);
4、傅里叶变换的性质
(1)平移不变性:在空域图像平移时,在频域中频谱不变
(2)旋转一致性:空域中图像旋转a角度,在频域中同样也旋转a角度5、离散余弦变换
Y = dct2(X)二维离散余弦变换
A = imread(‘lenna.bmp’);
A1 = im2double(A);
B = dct2(A1);
C = abs(B);
Imshow(unint8(c));
四、图像增强
1、图像灰度映射
(1)点运算:见二.1节
(2)灰度拉伸
将原始图像的灰度区间分成多段,分别作线性变换,即分段线性变换。
Y = imadjust(X, [a,b], [a’,b’]) *注意要归一化
代码:
A = imread(’ballet.bmp’);
B = imadjust(A, [0, 0.2], [0, 0.8]);
imshow(B);
2、直方图的均衡化
直方图:表达一幅图像灰度级数分布情况的统计图。
横坐标:灰度值fk,一般取0~255;
纵坐标:1、某一灰度值fk的像素个数nk;
2、灰度值fk出现的概率nk/n,n是像素的总个数。
*手工计算直方图均衡化步骤:
(1)给出所有灰度级fk(k=0,…,L-1)的所有概率值;
(2)求出所有累积分布函数gk: