本文系《数字图像处理原理与实践(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. 浅谈BFC与应用

    什么是BFC BFC(Block formatting context)的中文翻译我们一般叫做块级格式化上下文.它是一个独立渲染的区域,规定了内部如何布局,同时不受外界的影响.我们的根元素本身就是一个 ...

  2. 调用QQ截图

    var SHExecInfo: SHELLEXECUTEINFO; begin //截图前隐藏主程序窗口 Form1.Hide; //等待截图执行完成 SHExecInfo.cbSize := siz ...

  3. webstorm入门1-主题和配色

    1.引子 以前介绍过 Sublime text 3 系列的文章,着重介绍了 Sublime text 3 如何下载.安装.插件.配置等内容.Sublime text 3的轻量和富扩展,为前端开发带来了 ...

  4. 做自己的Android ROM,屏蔽对framework中的系统APK的签名检查

    最近两天一直在尝试更新Android中的关键库以达到定制ROM的效果,中间比较曲折,记录下来供自己和大家参考. 因为我需要基于Android的原生代码做一定的修改,所以如果无法将我自己编译出的APK或 ...

  5. FZOJ2111:Min Number

    Problem Description Now you are given one non-negative integer n in 10-base notation, it will only c ...

  6. Cocos2dx 3.0 过渡篇(三十一)ValueVector和Vector不得不说的故事

    本文投票地址:http://vote.blog.csdn.net/Article/Details?articleid=37834689 前天看到一个颇为纠结的选择题:有一天你遇到一个外星人,这时外星人 ...

  7. TCP的三次握手和四次挥手(转)

    注:主动.被动 与 服务器.客户端没有明确的对应关系. 这个图N多人都知道,它排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深 ...

  8. iPhone App开发实战手册学习笔记(9)之设计IOS App的目标

    1 前言 如果我们要做一个属于自己的App需要达到那些目标呢,今天就来介绍一下. 2 详述 2.1 关注用户及其需求 你的主要目标永远都是在设计方案之前先想好用户用例.有些开发人员喜欢编写用户故事来确 ...

  9. 与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单“应用程序...”和“共享...”关联, 与 Windows Phone 的图片中心集成

    原文:与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单"应用程序..."和"共享..." ...

  10. Java使用javax.mail.jar发送邮件并同意发送附件

    因为Java在开发网页上占有绝大优势.所以作为web端的领军人物,譬如发送短信和发送邮件这些就成了必定,网络安全一再安全我们须要把账号的安全级别提到更高.因此这些对于开发者也就成了必须掌握的技能!我一 ...