《数字图像处理原理与实践(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的更多相关文章

  1. 《数字图像处理原理与实践(MATLAB版)》一书之代码Part6

    本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part6,辑录该书第281至第374页之代码,供有须要读者下载研究使用.代码运行结果请參见原书配图,建议下载代码前阅读下 ...

  2. 《数字图像处理原理与实践(MATLAB版)》一书之代码Part2

    本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part2(P43~80),代码运行结果请參见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MA ...

  3. 《数字图像处理原理与实践(MATLAB版)》一书之代码Part1

    本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part1(P1~42).代码运行结果请參见原书配图. P20 I = imread('lena.jpg');BW1 = ...

  4. 数字图像处理原理与实践(MATLAB版)勘误表

    本文系<数字图像处理原理与实践(MATLAB版)>一书的勘误表. [内容简单介绍]本书全面系统地介绍了数字图像处理技术的理论与方法,内容涉及几何变换.灰度变换.图像增强.图像切割.图像去噪 ...

  5. 《数字图像处理原理与实践(MATLAB文本)》书代码Part7

    这篇文章是<数字图像处理原理与实践(MATLAB文本)>一本书的代码系列Part7(由于调整先前宣布订单,请读者注意分页程序,而不仅仅是基于标题数的一系列文章),第一本书特色186经225 ...

  6. Reading | 《数字图像处理原理与实践(MATLAB版)》(未完待续)

    目录 一.前言 1.MATLAB or C++ 2.图像文件 文件头 调色板 像素数据 3.RGB颜色空间 原理 坐标表示 4.MATLAB中的图像文件 图像类型 image()函数 imshow() ...

  7. FPGA经典:Verilog传奇与基于FPGA的数字图像处理原理及应用

    一 简述 最近恶补基础知识,借了<<Verilog传奇>>,<基于FPGA的嵌入式图像处理系统设计>和<<基千FPGA的数字图像处理原理及应用>& ...

  8. MATLAB数字图像处理(一)基础操作和傅立叶变换

    数字图像处理是一门集计算机科学.光学.数学.物理学等多学科的综合科学.随着计算机科学的发展,数字图像处理技术取得了巨大的进展,呈现出强大的生命力,已经在多种领域取得了大量的应用,推动了社会的发展.其中 ...

  9. Win8MetroC#数字图像处理--2.2图像二值化函数

    原文:Win8MetroC#数字图像处理--2.2图像二值化函数 [函数代码] /// <summary> /// Binary process. /// </summary> ...

随机推荐

  1. POJ 1451 T9 (字典树好题)

    背景:为了方便九宫格手机用户发短信,希望在用户按键时,根据提供的字典(给出字符串和频数),给出各个阶段最有可能要打的单词. 题意: 首先给出的是字典,每个单词有一个出现频率.然后给出的是询问,每个询问 ...

  2. 第一章 第一个dubbo项目

    为了安全:服务启动的ip全部使用10.10.10.10 版本: dubbo:2.5.5 重要的网址: dubbo的github:https://github.com/alibaba/dubbo dub ...

  3. 不用IDE写C#的Hello World

    用Visual Studio等IDE写C#的Hello World非常简单,但脱离了IDE你能不能打印出Hello World呢?这不是说工作时脱离IDE,而是学习一下CLR的执行模型. Hello ...

  4. centos6安装ElasticSearch5.6.5错误记录

    在centos6安装ES的时候遇到不少问题.这里记录日志.以后安装一定要升级centos7,别说啥稳定问题了,该升级就升级. [1]: max file descriptors [4096] for ...

  5. HMM与分词、词性标注、命名实体识别

    http://www.hankcs.com/nlp/hmm-and-segmentation-tagging-named-entity-recognition.html HMM(隐马尔可夫模型)是用来 ...

  6. PHP 使用PHPExcel删除Excel单元格指定列

    需求是这样的: 有一个系统仅公司内部和外部经销商使用,在一个导出功能中公司内部员工跟外部经销商导出的列是不一样的(某些数据是不能提供给经销商的) 因为导出的数据都是一样的(某些列外数据外部没有)因此并 ...

  7. Jquery的分页插件

    Jquery的分页插件, 用起来还不错. 来自: http://flaviusmatis.github.io/simplePagination.js/   下载地址: https://github.c ...

  8. [Algorithm] Longest Substring Without Repeating Characters?

    Given a string, find the length of the longest substring without repeating characters. Example 1: In ...

  9. ZH奶酪:Python中range和xrange的区别

    range    函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列.range示例: >>> ...

  10. Android 如何关闭Navigation Bar M

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...