《数字图像处理原理与实践(MATLAB版)》一书之代码Part5
本文系《数字图像处理原理与实践(MATLAB版)》一书之代码系列的Part5。辑录该书第225至第280页之代码(此处应部分读者之需求调整了代码公布的顺序——具体说明请见以下的文章链接),供有须要读者下载研究使用。代码运行结果请參见原书配图,建议下载代码前阅读下文:
关于《数字图像处理原理与实践(MATLAB版)》一书代码公布的说明
http://blog.csdn.net/baimafujinji/article/details/40987807
P245
I = imread('lena.png');
fcoef=fft2(double(I)); %FFT变换
tmp1 =log(1+abs(fcoef));
spectrum = fftshift(fcoef); %调整中心
tmp2 = log(1+abs(spectrum));
ifcoef = ifft2(fcoef); %逆变换
figure %显示处理结果
subplot(2,2,1), imshow(I), title('source image');
subplot(2,2,2), imshow(tmp1,[]), title('FFT image');
subplot(2,2,3), imshow(tmp2,[]), title('shift FFT image');
subplot(2,2,4), imshow(ifcoef,[]), title('IFFT image');
P251
J= double(imread('lena.bmp'));
K = dct2(J);
figure, imshow(K,[0 255])
P252-1
J= double(imread('lena.bmp'));
K = dct2(J);
figure, imshow(K,[0 255]);
K_i = idct2(K);
figure, imshow(K_i,[0 255])
P252-2
J= double(imread('lena.bmp'));
A = J(1:8,1:8);
D = dctmtx(8);
dct_1 = D*A;
dct_2 = D'*dct_1;
P252-3
J= double(imread('lena.bmp'));
A = J(1:8,1:8);
D = dctmtx(8);
dct_1 = D*A*D';
dct_2 = dct2(A);
P253
I = imread('cameraman.tif');
I = im2double(I);
T = dctmtx(8);
dct = @(block_struct) T * block_struct.data * T';
B = blockproc(I,[8 8],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];
B2 = blockproc(B,[8 8],@(block_struct) mask .* block_struct.data);
invdct = @(block_struct) T' * block_struct.data * T;
I2 = blockproc(B2,[8 8],invdct);
imshow(I), figure, imshow(I2)
P262
a = [0 0 1 1 0 0 1 1];
b = fwht(a);
P263
I = imread('baboon.bmp');
I1 = double(I);
T = hadamard(8);
myFun1 = @(block_struct)T*block_struct.data*T/64;
H = blockproc(I1, [8 8], myFun1);
H(abs(H)<3.5)=0;
myFun2 = @(block_struct)T*block_struct.data*T;
I2 = blockproc(H, [8 8], myFun2);
subplot(121), imshow(I1,[]), title('original image');
subplot(122), imshow(I2,[]), title('zipped image');
P264
I = imread('baboon.bmp');
I1 = double(I);
[m n] =size(I);
sizi = 8;
num = 16;
%分块进行离散沃尔什变换
T = hadamard(sizi);
myFun1 = @(block_struct)T*block_struct.data*T/(sizi.^2);
hdcoe = blockproc(I1, [sizi, sizi], myFun1);
%又一次排列系数
coe = im2col(hdcoe, [sizi, sizi], 'distinct');
coe_t = abs(coe);
[Y, ind] = sort(coe_t);
%舍去绝对值较小的系数
[m_c, n_c] = size(coe);
for i = 1:n_c
coe(ind(1:num, i), i)=0;
end
%重建图像
re_hdcoe = col2im(coe, [sizi, sizi], [m, n], 'distinct');
myFun2 = @(block_struct)T*block_struct.data*T;
re_s = blockproc(re_hdcoe, [sizi, sizi], myFun2);
subplot(121), imshow(I1,[]), title('original image');
subplot(122), imshow(re_s,[]), title('compressed image');
P268
dim1 = [1 1 1 2 2 2 3 3 3];
dim2 = [1 2 3 1 2 3 1 2 3];
dim3 = [63 75 78 50 56 65 70 71 80];
sum( (dim1-mean(dim1)) .* (dim2-mean(dim2)) ) / ( 9-1 ) % 0
sum( (dim1-mean(dim1)) .* (dim3-mean(dim3)) ) / ( 9-1 ) % 0.625
sum( (dim2-mean(dim2)) .* (dim3-mean(dim3)) ) / (9-1 ) % 5
std(dim1)^2 % 0.75
std(dim2)^2 % 0.75
std(dim3)^2 % 100.7778
P274
X = [2 2; 2 3; 3 4; 4 3; 5 4; 5 5];
[COEFF,SCORE,latent,tsquare] = princomp(X);
P275-1
X0=X-repmat(mean(X),6,1);
SCORE_1 = X0*COEFF;
P275-2
X = [2 2; 2 3; 3 4; 4 3; 5 4; 5 5];
V = cov(X);
[COEFF,latent] = pcacov(V)
P277
I = imread('baboon.bmp');
x = double(I)/255;
[m,n]=size(x);
y =[];
%拆解图像
for i = 1:m/8;
for j = 1:n/8;
ii = (i-1)*8+1;
jj = (j-1)*8+1;
y_app = reshape(x(ii:ii+7,jj:jj+7),1,64);
y=[y;y_app];
end
end
%KL变换
[COEFF,SCORE,latent] = princomp(y);
kl = y * COEFF;
kl1 = kl;
kl2 = kl;
kl3 = kl;
%置零压缩过程
kl1(:, 33:64)=0;
kl2(:, 17:64)=0;
kl3(:, 9:64)=0;
%KL逆变换
kl_i = kl*COEFF';
kl1_i = kl1*COEFF';
kl2_i = kl2*COEFF';
kl3_i = kl3*COEFF';
image = ones(256,256);
image1 = ones(256,256);
image2 = ones(256,256);
image3 = ones(256,256);
k=1;
%重组图像
for i = 1:m/8;
for j = 1:n/8;
y = reshape(kl_i(k, 1:64),8,8);
y1 = reshape(kl1_i(k, 1:64),8,8);
y2 = reshape(kl2_i(k, 1:64),8,8);
y3 = reshape(kl3_i(k, 1:64),8,8);
ii = (i-1)*8+1;
jj = (j-1)*8+1;
image(ii:ii+7,jj:jj+7) = y;
image1(ii:ii+7,jj:jj+7) = y1;
image2(ii:ii+7,jj:jj+7) = y2;
image3(ii:ii+7,jj:jj+7) = y3;
k=k+1;
end
end
(代码公布未完,请待兴许...)
《数字图像处理原理与实践(MATLAB版)》一书之代码Part5的更多相关文章
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part6
本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part6,辑录该书第281至第374页之代码,供有须要读者下载研究使用.代码运行结果请參见原书配图,建议下载代码前阅读下 ...
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part2
本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part2(P43~80),代码运行结果请參见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MA ...
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part1
本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part1(P1~42).代码运行结果请參见原书配图. P20 I = imread('lena.jpg');BW1 = ...
- 数字图像处理原理与实践(MATLAB版)勘误表
本文系<数字图像处理原理与实践(MATLAB版)>一书的勘误表. [内容简单介绍]本书全面系统地介绍了数字图像处理技术的理论与方法,内容涉及几何变换.灰度变换.图像增强.图像切割.图像去噪 ...
- 《数字图像处理原理与实践(MATLAB文本)》书代码Part7
这篇文章是<数字图像处理原理与实践(MATLAB文本)>一本书的代码系列Part7(由于调整先前宣布订单,请读者注意分页程序,而不仅仅是基于标题数的一系列文章),第一本书特色186经225 ...
- Reading | 《数字图像处理原理与实践(MATLAB版)》(未完待续)
目录 一.前言 1.MATLAB or C++ 2.图像文件 文件头 调色板 像素数据 3.RGB颜色空间 原理 坐标表示 4.MATLAB中的图像文件 图像类型 image()函数 imshow() ...
- FPGA经典:Verilog传奇与基于FPGA的数字图像处理原理及应用
一 简述 最近恶补基础知识,借了<<Verilog传奇>>,<基于FPGA的嵌入式图像处理系统设计>和<<基千FPGA的数字图像处理原理及应用>& ...
- MATLAB数字图像处理(一)基础操作和傅立叶变换
数字图像处理是一门集计算机科学.光学.数学.物理学等多学科的综合科学.随着计算机科学的发展,数字图像处理技术取得了巨大的进展,呈现出强大的生命力,已经在多种领域取得了大量的应用,推动了社会的发展.其中 ...
- Win8MetroC#数字图像处理--2.2图像二值化函数
原文:Win8MetroC#数字图像处理--2.2图像二值化函数 [函数代码] /// <summary> /// Binary process. /// </summary> ...
随机推荐
- libcurl HTTP POST请求向服务器发送json数据【转】
转载:http://blog.csdn.net/dgyanyong/article/details/14166217 转载:http://blog.csdn.net/th_gsb/article/de ...
- Sum Root to Leaf Numbers leetcode java
题目: Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a nu ...
- windows无法访问vmware搭建好虚拟机linux web服务器
[前置条件] vmware搭建好虚拟机web服务器 ,但是本机就是无法访问的解决办法. linux虚拟机的网络选择Bridged 桥接到本机网卡. 具体情况如下 : 1.本机能ping通虚拟机 2.虚 ...
- Linux系统中关于Sqlite3中文乱码问题及解决办法
新做的一个项目在本地(Win8)测试时没有问题,但传到服务器(Linux)时从Sqlite3数据库查询到的数据中文却是乱码(数据库中是正常的) 将php文件.html文件都设置成统一的utf8还是一样 ...
- 强制开启android webview debug模式使用Chrome inspect
强制开启android webview debug模式使用Chrome inspect https://blog.csdn.net/zhulin2609/article/details/5143782 ...
- Cognos11中Dashboard和HTML页面的简单集成
一.需求 之前很多第三方的程序都是通脱URL的形式可以和cognos Report进行集成,在我前几天的博文<Cognos11中通过URL访问report的设置>一篇中也提到了普通repo ...
- Windows 服务安装教程
一.安装服务1.已管理员的身份启动CMD2.输入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 回车3.输入 InstallUtil.exe Win ...
- SQL Server如何进行时间比较的代码
例子: datediff(dd,add_time,getdate()) not between 0 and 7 select count(*) from table where DATEDIFF ([ ...
- IIS 7 及以上 IIS错误页“编辑功能设置...”提示“锁定冲突”
原因是全局的设置锁定了此项,不让修改. 解决方法如下:
- git设置默认编辑为vim
f you want to set the editor only for Git, do either (you don’t need both): Set core.editor in your ...