代码部份
二维快速傅里叶
简单图像:
d = zeros(32,32); //32*32图像
d(13:20, 13:20) = 1; //中心白色方块大小为8*8
figure(1);
imshow(d, ‘notruesize’);
figure(2);
imshow(abs(ff2(d)), [-1, 5], ‘notruesize’); //傅里叶变换矩阵的元素一般为复数,应对变换后的结果求模;低于low显示为黑,高于high显示为白,缺省时按照256个灰度级显示
Matlab图像:
figure(1);
load imdemos saturn2;
imshow(saturn2);
figure(2);
S = fftshift(fft2(saturn2)); //将傅里叶变换后的图像频谱中心从矩阵原点移到矩阵中心
imshow(log(abs(S), []);
真彩图像:
figure(1);
A = imread(‘..’);
B = rgb2gray(A); //做傅里叶之前必须要把三个维度的真彩图像转化为灰度图像
imshow(B);
C = fftshift(fft2(B));
figure(2);
imshow(log(abs(C)), []);
二维离散余弦变换
RGB = imread(‘..’);
figure(1);
imshow(RGB);
GRAY = rgb2gray(GRB);
figure(2);
imshow(GRAY);
figure(3);
imshow(log(abs(dct2(GRAY))), []);
直接灰度变换(double)
图像求反
I = imread(‘..’);
imshow(I);
I = double(I); //转浮点
I = 255 - I ;
I = uint8(I);
figure;
imshow(I);
线性灰度变换
I = imread(‘..’);
imshow(I);
I = double(I); //转浮点
[M, N] = size(I);
for i = 1 : M
for j = 1 : N
if I(i, j) <= 30
I(i, j) = I (i, j);
elseif I(i, j) <= 150
I(i, j) = (200-30)/(150-30) * (I(i, j) - 30) + 30;
else
I(i, j) = (255-200)/(255-150) * (I(i, j) - 150) + 200;
end
end
end
figure(2);
imshow(uint8(I));
对数变换
I = imread(‘...’); figure(1); imshow(I);
I = double(I); I2 = 41*log(1+I); I2 = uint8(I2); figure; imshow(I2);
直方图修正
直方图均衡化
imhist(I); //显示图像直方图
histeq(I); //直方图均衡化histogram equal
平滑滤波器
线性平滑滤波器
J = imnoise(I, ‘salt & pepper’, 0.02); //gaussain参数为均值,方差;椒盐噪声参数为噪声密度
k = filter2(fspecial(‘average’, 3), J); //filter2为二位线性数字滤波,fspecial为指定滤波器和模板大小
中值滤波器
J = imnoise(I, ‘salt & pepper’, 0.02);
k = medfilt2(J, [5 5]); //5*5模板
锐化滤波器
梯度算子法
H = fspecial(‘Sobel’);
H = H’;
TH = filter2(H, I);
几何失真校正
灰度插值
f = checkboard(24);
figure(1); imshow(f);
s = 0.7; theta = pi/6;
T = [s*cos(theta) s*sin(theta) 0
-s*sin(theta) s*cos(theat) 0
0 0 1];
tform = maketform(‘affine’, T);
g1 = imtransform(f, tform, ‘nearest’); //最近邻插值
g2 = imtransform(f, tform); //双线性插值(默认没有第三个参数)
全彩色图像处理
平滑滤波
R = rgb(:, :, 1); G = rgb(:, :, 2); B = rgb(:, :, 3);
m = fspecial(‘average’);
R_filter = imfilter(R, m);
G_filter = imfilter(G, m);
B_filter = imfilter(B, m);
rgb_filter = cat(3, R_filter, G_filter, B_filter);
伪彩色处理
密度分层法
G2C = grayslice(I, 8);
imshow(G2C, hot(8));
边缘检测
梯度算子
[g, t] = edge(f, ‘roberts’, [], ‘both’); //sobel, prewitt,
subplot(2, 2, n);
imshow(g);
title(‘...’)’;
LOG
[g, t] = edge(f, ‘log’);
imshow(g);
Canny
[g, t] = edge(f, ‘canny’);
习题
绪论
数字图像:像素坐标和灰度值都是离散值的图像称为数字图像。
f(x,y):振幅f:该点的强度或灰度。(x,y)空间坐标。
当(x,y)和f的为有限,离散的数值时,该图像为数字图像。
数字图像处理:借助于数字计算机来处理数字图像。
图像的来源:主要是电磁能谱,此外还有声波,超声波和电子及计算机产生。
1.一幅256256的图像,若灰度级数为16,则存储它所需的比特数是
解:有256256个像素点,每个像素点有16种颜色(可以用4位二进制表示),比特数为2562564,256为2的8次方,4为2的二次方,所以一共是256K。
图像获取
1.图像中虚假轮廓的出现就其本质而言是由于
解:图像空间分辨率变小会导致棋盘模式和像素颗粒变粗;图像灰度级/幅度分辨率变小,会出现虚假轮廓(平滑区域)和木刻画效果。
2.计算4、8、m通路的长度和计算4、8、m连通的距离是不一样的
3.一幅图像在采样时,行、列的采样点与量化级数
解:既影响数字图像的质量又影响数字图像的信息量。
(连续图像经过采样得到离散图像,只要满足采样定理便可以无失真重建原连续图像;离散图像经过量化处理可以得到计算机直接处理的数字图像)
(采样是对图像空间的数字化,量化是对图像灰度值的数字化,采样可以确定图像水平和垂直方向的像素点数)
4.图像的数学表达式I=T(x,y,z,t,λ)中
(x,y,z)是空间坐标,λ 是波长/颜色,t 是时间,I是光点(x,y,z)的强度(幅度) 。
5.图像采集系统包括:成像系统、采样系统、量化器。
6.邻域是4、D、8邻域三种;连通性是4、8、m连接三种;距离是欧氏距离、D4距离、D8距离、Dm距离四种
图像增强
1.对数可以压缩图像是因为变换后仅取了一部分灰度值的范围。
2.高频增强滤波器由于相对削弱了低频成分,因而滤波所得的图像往往偏暗,对比度差,所以常常需要在滤波后进行直方图均衡化(提高对比度)
3.如果不知道原图像的功率谱,只知道噪声的方差,请问采用何种方法复原图像比较好?为什么?用约束最小二乘方滤波方法复原比较好,因为它只需要知道噪声方差和均值就可以对所处理的每一幅图像产生最优结果;而维纳滤波需要知道未退化图像和噪声功率谱,通常来讲这是未知的,所获得的图像也只是平均意义上的最优。
4.试分析、比较三种典型的滤波复原方法:逆滤波、维纳滤波和最小二乘方滤波。
1)噪声不存在时,逆和维纳可以获得相同的复原效果;噪声存在时,维纳比逆复原效果更好,因为逆没有考虑噪声。
2)维纳需要知道未退化图像和噪声功率谱,而这些都是未知的;而且基于最小化统计准则,所以获得的只是平均意义上的最优。
3)最小二乘方滤波只需要知道噪声均值和方差,而且对每幅图像都能产生最优结果。
5.如果退化图像完全是由噪声引起的,如何复原此类退化图像?
当图像中唯一退化是噪声时,g(x, y) = f(x, y) + n(x, y),对应的傅里叶变换为G(u,v) = F(u,v) + N(u,v),空域滤波复原:均值滤波器,顺序统计滤波器,自适应滤波器;频域滤波复原:带通、带阻、陷波滤波器。
彩色图像处理
1.一幅1024x1024彩色图像,数据量约为(字节):
24位真彩,用1024102424/8,因为以M为单位,所以再除两个1024,为3M。
图像编码
1.去除心里视觉冗余 有损不可逆