实验目:
1 理解傅立叶变换离散余弦变换图处理中应
2 掌握噪声模拟空域图滤波函数方法
3 掌握频域滤波概念方法
4 利MATLAB程序进行编程实现数字图傅立叶变换DCT变换空域频域滤波
二实验容
1 傅立叶变换
绘制二值图矩阵傅立叶函数视化
fzeros(3030)
f(5241317)1
figureimshow(f)
Ffft2(f)
F2log(abs(F))
figureimshow(F2[])
Ffft2(f256256) 零填充256×256矩阵
figureimshow(log(abs(F)))
F2fftshift(F) 图频谱中心矩阵原点移矩阵中心
figureimshow(log(abs(F2)))
2 离散余弦变换(DCT)
(1) dct2图lenabmp’进行DCT变换
RGBimread('lenabmp')
figureimshow(RGB)
Irgb2gray(RGB) 转换灰度图
figureimshow(I)
Jdct2(I)
figureimshow(log(abs(J))[])
(2)述DCT变换结果中绝值10系数舍弃idct2重构图原图较
RGBimread('lenabmp')
Irgb2gray(RGB) 转换灰度图
Jdct2(I)
figureimshow(I)
Kidct2(J)
figureimshow(K[0 255])
J(abs(J)<10)0 舍弃系数
K2idct2(J)
figureimshow(K2[0 255])
(3)利DCT变换进行图压缩
编码部分:
clear all
Iimread('cameramantif')开图文件
Iim2double(I)转换成双精度
Tdctmtx(8)构造离散余弦变换矩阵
Bblkproc(I[8 8]'P1*x*P2'TT')图进行DCT变换
mask[1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 ]
B2blkproc(B[8 8]'P1*x'mask)保留关键系数
I2blkproc(B2[8 8]'P1*x*P2'T'T)做DCT逆变换
subplot(121)
imshow(I)
title('原始图')
subplot(122)
imshow(I2)
title('DCT变换图')
图保存CC2数组中文件名cameramanmat*
8*8块矩阵仅保留10系数*
CC20
CC2double(CC2)
[rowcol]size(B2)
row_countrow8col_countcol8
po1
for r0row_count1
for c0col_count1
CC2(po)B2(r*8+1c*8+1)
CC2(po+1)B2(r*8+1c*8+2)
CC2(po+2)B2(r*8+1c*8+3)
CC2(po+3)B2(r*8+1c*8+4)
CC2(po+4)B2(r*8+2c*8+1)
CC2(po+5)B2(r*8+2c*8+2)
CC2(po+6)B2(r*8+2c*8+3)
CC2(po+7)B2(r*8+3c*8+1)
CC2(po+8)B2(r*8+3c*8+2)
CC2(po+9)B2(r*8+4c*8+1)
popo+10
end
end
CC2CC2*10 CC2int8(CC2)
save cameramanmat CC2
解码部分
clear all
Iimread('cameramantif')
B2double(zeros(256256))
load cameramanmat
Tdctmtx(8)
[rowcol]size(B2)
row_countrow8
col_countcol8
po1
CC2double(CC2)
CC2CC210
for r0row_count1
for c0col_count1
B2(r*8+1c*8+1)CC2(po)
B2(r*8+1c*8+2) CC2(po+1)
B2(r*8+1c*8+3)CC2(po+2)
B2(r*8+1c*8+4) CC2(po+3)
B2(r*8+2c*8+1)CC2(po+4)
B2(r*8+2c*8+2)CC2(po+5)
B2(r*8+2c*8+3)CC2(po+6)
B2(r*8+3c*8+1)CC2(po+7)
B2(r*8+3c*8+2)CC2(po+8)
B2(r*8+4c*8+1)CC2(po+9)
popo+10
end
end
I2blkproc(B2[8 8]'P1*x*P2'T'T)
subplot(121)
imshow(I)
title('原图')
subplot(122)
imshow(I2)
title('解码图')
3 噪声模拟空域滤波增强
(1)噪声模拟
利函数imnoise图eighttif’分添加高斯(gaussian)噪声椒盐(salt & pepper)噪声
Iimread('eighttif')
figureimshow(I)
I1imnoise(I'gaussian'0001)
figureimshow(I1)
I2imnoise(I'salt & pepper')
figureimshow(I2)
(2)空域滤波增强
述噪声图进行均值滤波中值滤波较滤波效果
Iimread('eighttif')
Jimnoise(I'salt & pepper'002)
figureimshow(J)
K1medfilt2(J[3 3]) 3*3中值滤波
figureimshow(K1)
K2filter2(fspecial('average'5)J)255
figureimshow(K2)
均值滤波器种常线性低通滑滤波器抑制图中噪声时图变模糊
中值滤波器种常非线性滑滤波器消图中孤立噪声点产生较少模糊
Iimread('ricepng')
figureimshow(I)
hfspecial('laplacian') fspecial建立预定义滤波算子
I2filter2(hI)
figureimshow(I2)
4 频域滤波
(1)频域低通滤波
图中边缘噪声应图傅立叶变换中高频部分频域中消弱影响设法减弱部分频率分量选择合适H(uv)消弱F(uv)高频分量G(uv)低通滤波消弱噪声影响模糊边缘轮廓空域中滑方法类似
典型低通滤波器:(见教材)
– 理想低通滤波器
– Butterworth低通滤波器
– ……
Butterworth低通滤波器实现滑
Iimread('lena256bmp') 读入原图文件
figure(1) imshow(I) 设定窗口显示原图
J1imnoise(I'salt & pepper') 叠加椒盐噪声
figure(2) imshow(J1)
F double(J1) 数类型转换MATLAB支持图符号整型计算
G fft2(F) 傅立叶变换
G fftshift(G)
[MN]size(G)
nn 2 二阶巴特沃斯(Butterworth)低通滤波器
d0 50
m fix(M2)
n fix(N2)
for i 1 M
for j 1 N
d sqrt((im)^2+(jn)^2)
h 1(1+ (dd0)^(2*nn)) 计算低通滤波器传递函数教材P261式:849
result(ij) h * G(ij)
end
end
result ifftshift(result)
J2 ifft2(result)
J3 uint8(real(J2))
figureimshow(J3[]) 显示滤波处理图
(2)频域高通滤波
Butterworth高通滤波器实现滑
Iimread('lena256bmp') 读入原图文件
figure(1) imshow(I) 设定窗口显示原图
J1imnoise(I'gaussian'0001) 叠加高斯噪声
figure(2) imshow(J1)
F double(J1) 数类型转换MATLAB支持图符号整型计算
G fft2(F) 傅立叶变换
G fftshift(G)
[MN]size(G)
nn 2 二阶巴特沃斯(Butterworth)高通滤波器
d0 50
m fix(M2)
n fix(N2)
for i 1 M
for j 1 N
d sqrt((im)^2+(jn)^2)
h 1(1+ 0414*(d0d)^(2*nn)) 计算高通滤波器传递函数教材P265式:856
result(ij) h * G(ij)
end
end
result ifftshift(result)
J2 ifft2(result)
J3 uint8(real(J2))
figureimshow(J3[]) 显示滤波处理图
三求思考题(部分容作实验报告 五实验总结体会中部分)
1 描述实验基步骤数图片出步骤中取实验结果进行必讨
2 必须包括原始图计算处理图相应解释
3 2(3)利DCT变换进行图压缩 中mask模板矩阵进行修改分增加减少中1数例增加15减少6(注意mask模板矩阵修改)进行实验分析结果
44(1)频域低通滤波部分噪声函数进行修改改系数001gaussian’噪声4 (2)频域高通滤波部分噪声函数进行修改改 salt&pepper’类型噪声进行实验分析巴特沃斯(Butterworth)高通滤波低通滤波特点
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档