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

关于《数字图像处理原理与实践(MATLAB版)》一书代码公布的说明

http://blog.csdn.net/baimafujinji/article/details/40987807

P44

i = imread('theatre.jpg');
i = rgb2gray(i);
i = double(i);

out1 = log(1+i)/0.065;
out2 = log(1+i)/0.035;
out1(find(out1>255)) = 255;
out2(find(out2>255)) = 255;
out1 = uint8(out1);
out2 = uint8(out2);

subplot(221), imshow(out1), title('image, p = 0.065');
subplot(222), imhist(out1), title('histgram, p = 0.065');
subplot(223), imshow(out2), title('image, p = 0.035');
subplot(224), imhist(out2), title('histgram, p = 0.035');

P47

i = rgb2gray(imread('theatre.jpg'));
i = double(i);
y1 = 255*(i/255).^2.5;
y2 = 255*(i/255).^0.4;
y1 = uint8(y1);
y2 = uint8(y2);
subplot(221), imshow(y1), title('p =2.5');
subplot(222), imhist(y1), title('p =2.5');
subplot(223), imshow(y2), title('p =0.4');
subplot(224), imhist(y2), title('p =0.4');

P48

i = rgb2gray(imread('theatre.jpg'));
y1 = double(i);
y1 = 255*(y1/255).^2.5;
y2 = uint8(y1);
y3 = imadjust(y2, [ ], [ ], 0.4);
subplot(131), imshow(i), title('original image');
subplot(132), imshow(y2),title('power = 2.5');
subplot(133), imshow(y3),title('gamma = 0.4');

P49

i = imread('theatre.jpg');
i = rgb2gray(i);
i = double(i);

y1 = 1.5.^(i*0.070)-1;
y2 = 1.5.^(i*0.050)-1;
y1(find(y1>255)) = 255;
y2(find(y2>255)) = 255;
y1 = uint8(y1);
y2 = uint8(y2);

subplot(221), imshow(y1), title('c=0.070');
subplot(222), imhist(y1), title('c=0.070');
subplot(223), imshow(y2), title('c=0.050');
subplot(224), imhist(y2), title('c=0.050');

P52

i = imread('theatre.jpg');
i = rgb2gray(i);
L = imadjust(i,[ ],[50/255;150/255]);
J = imadjust(L,[50/255;150/255 ],[20/255;230/255]);
subplot(221), imshow(L), title('low contrast');
subplot(222), imhist(L), title('low contrast');
subplot(223), imshow(J), title('gray stretch');
subplot(224), imhist(J), title('gray stretch');

P54

i = rgb2gray(imread('theatre.jpg'));
LC = imadjust(i,[ ],[50/255;150/255]);
figure(1), subplot(221), imshow(LC);
title('low contrast');
figure(1),subplot(222), imhist(LC);
title('low contrast');
HE1 = histeq(LC);
figure(1), subplot(223), imshow(HE1);
title('histogram equalization');
figure(1),subplot(224), imhist(HE1);
title('histogram equalization');

P56

img = rgb2gray(imread('theatre.jpg'));
img_ref = rgb2gray(imread('rpic.jpg'));
[hgram, x] = imhist(img_ref);
J = histeq(img, hgram);
subplot(2,3,1), imshow(img), title('original image');
subplot(2,3,4), imhist(img), title('original image');
subplot(2,3,2), imshow(img_ref), title('reference image');
subplot(2,3,5), imhist(img_ref), title('reference image');
subplot(2,3,3), imshow(J), title('output image');
subplot(2,3,6), imhist(J), title('output image');

P64-1

I = imread('apostles.jpg');
I = double(I);
B = zeros(size(I));
H = size(I);
move_x = 100;
move_y = 150;
B(move_y + 1:H(1), move_x+1:H(2), 1:H(3))=...
I(1:H(1)-move_y, 1:H(2) - move_x, 1:H(3));
subplot(1,2,1),subimage(uint8(I))
title('原图像')
subplot(1,2,2),subimage(uint8(B))
title('平移变换');

P64-2

I = imread('apostles.jpg');
se=translate(strel(1),[150 100]);
B = imdilate(I,se);
figure;
subplot(1,2,1),subimage(I);
title('原图像');
subplot(1,2,2),subimage(B);
title('平移变换');

P66

I = imread('apostles.jpg');
[height, width, dim]=size(I);
%水平镜像变换
tform = maketform('affine',[-1 0 0;0 1 0; width 0 1]);
B=imtransform(I, tform, 'nearest');
%垂直镜像变换
tform2 = maketform('affine', [1 0 0; 0 -1 0; 0 height 1]);
C=imtransform(I, tform2, 'nearest');
subplot(1,3,1),imshow(I);
title('原图像');
subplot(1,3,2),imshow(B);
title('水平图像');
subplot(1,3,3),imshow(C);
title('垂直图像');

P67

A = imread('apostles.jpg');
A = double(A);
figure(1), imshow(uint8(A));
H = size(A);
figure(2),B(1:H(1),1:H(2),1:H(3))=A(H(1):-1:1,1:H(2),1:H(3));%垂直镜像
imshow(uint8(B));
figure(3),C(1:H(1),1:H(2),1:H(3))=A(1:H(1),H(2):-1:1,1:H(3));%水平镜像
imshow(uint8(C));

P69

I = imread('apostles.jpg');
tform = maketform('affine',[0 1 0; 1 0 0; 0 0 1]);%定义转置矩阵
B = imtransform(I, tform, 'nearest');
subplot(1,2,1),imshow(I)
title('原图像');
subplot(1,2,2),imshow(B)
title('转置图像');

P74

I = imread('C:\apostles.jpg');
A = imresize(I, 1.5, 'nearest');
B = imresize(I, 1.5, 'bilinear');
C = imresize(I, 1.5, 'bicubic');
subplot(2,2,1), imshow(I), title('original');
subplot(2,2,2), imshow(A), title('nearest');
subplot(2,2,3), imshow(B), title('bilinear');
subplot(2,2,4), imshow(C), title('bicubic');

P80

I = imread('apostles.jpg');
A = imrotate(I, 30, 'nearest');%旋转30度,最邻近插值
figure(1),imshow(A)
B = imrotate(I, 45, 'bilinear','loose');%旋转45度,二次线性插值
figure(2),imshow(B)

(代码公布未完,请待兴许...)

《数字图像处理原理与实践(MATLAB版)》一书之代码Part2的更多相关文章

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

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

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

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

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

    <数字图像处理原理与实践(MATLAB版)>一书之代码Part5 本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part5.辑录该书第225至第280页之代 ...

  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. QTableWidget表格合并若干问题及解决方法

    Qt提供 QTableWidget作为表格的类以实现表格的基本功能,表格中所装载的每一个单元格由类QTableWidgetItem提供.这是基于表格实现 Qt提供的一个基础类,若想实现定制表格和单元格 ...

  2. Silverlight技术调查(3)——国际化

    原文 Silverlight技术调查(3)——国际化 网上有很多关于Silverlight国际化的说明,包括MSDN的示例,都没有强调一点,下面以红色标示,基础国际化知识请先参考MSDN相关章节,关键 ...

  3. boost::asio async_write也不能保证一次发完所有数据 一

    你要是看过basic_stream_socket的文档,里面提到async_write_some不能保证将所有要发送的数据都发出去.并且提到如果想这样做,需要使用boost asio的async_wr ...

  4. WPF的MVVM

    一.关于WPF WPF(Windows  Presentation Foundation) ,从名字来看,Microsoft想把WPF技术作为Windows程序外观(表现层)的基础.我们知道,现在开发 ...

  5. TControl.GetDeviceContext会给图形控件建立新的坐标原点和建立新的剪裁区域

    这是取得DC句柄的其中一种方法(会重定义原点和建立新的剪裁区): function TControl.GetDeviceContext(var WindowHandle: HWnd): HDC; be ...

  6. MTU & MSS 详解记录(转)

              先学习理解一下帧的封装格式:   需要注意的是,区别两种帧封装格式:802标准帧和以太网帧 1,在802标准定义的帧格式中,长度字段是指它后续数据的字节长度,但不包括C R C检验 ...

  7. net析构函数对垃圾回收的影响

    net析构函数对垃圾回收的影响 之前忘了说了 代码都是在Release模式下运行的,现在补充上. 这里说析构函数,其实并不准确,应该叫Finalize函数,Finalize函数形式上和c++的析构函数 ...

  8. Effective C++ 24,25

    24.在函数重载和设定參数缺省值间要谨慎选择. 获得一种类型的数据的最小值或最大值,对于c中,一般使用在<linits.h>中定义的各种宏如INT_MIN 来进行表示,可是这样无法进行泛型 ...

  9. 马航MH17事件将把普京逼入绝境?

    据7月22日报道,马克兰东部民间武装22日凌晨将失事客机的"黑匣子"交给马来西亚方面.乌政府与民间武装允许在坠机地点附的小范围停火. 与此同一时候,联合国安理会21日通过决议,敦促 ...

  10. Unity3D-深入剖析NGUI的游戏UI架构

    Unity3D-NGUI分析,使用NGUI做UI须要注意的几个要点在此我想罗列一下,对我在U3D上做UI的一些总结,最后解剖一下NGUI的源码.它是假设架构和运作的. 在此前我介绍了自己项目的架构方式 ...