《数字图像处理原理与实践(MATLAB版)》一书之代码Part2[通俗易懂]

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

大家好,又见面了,我是全栈君。

本文系《数字图像处理原理与实践(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)


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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116517.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab矩阵拼接

    matlab矩阵拼接matlab中矩阵拼接分为行拼接和列拼接

    2022年6月25日
    22
  • 字符串数组转换为list集合

    字符串数组转换为list集合String[]arr={“a”,”C”,”abc”}; //asList该方法可以直接将一个数组转换为list集合,但是该集合是[只读的],不能对得到的集合进行增删改List<String>asList=Arrays.asList(arr);System.out.println(asList);//结果:[a,C,abc]Listlis…

    2022年6月21日
    35
  • 直插式电阻电容封装与尺寸图…[通俗易懂]

    原文地址:直插式电阻电容封装与尺寸图解作者:北极光直插式无源器件体积普遍要比贴片式要大一些,而且直插式器件在制作PCB时需要打孔,焊接工艺跟贴片式也有差别,较为麻烦,相对而言,直插式电阻电容多是面向大功率电路应用。一、直插式电阻封装及尺寸直插式电阻封装为AXIAL-xx形式(比如AXIAL-0.3、AXIAL-0.4),后面的xx代表焊盘中心间距为xx英寸,这一点在网上很多文章都没说清楚

    2022年4月12日
    468
  • golang 激活码_最新在线免费激活[通俗易懂]

    (golang 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月26日
    130
  • select top 的用法

    select top 的用法selecttop1*from员工orderby编号select*from员工orderby编号select*from员工where编号likeYG%orderby编号descselectTOP1*from员工where编号likeYG%orderby编号desc

    2022年7月13日
    19
  • typescript 多继承_说明类的继承和多态有什么作用

    typescript 多继承_说明类的继承和多态有什么作用前言对于传统的JavaScript程序我们会使用函数和基于原型的继承来创建可重用的组件,但对于熟悉使用面向对象方式的程序员使用这些语法就有些棘手,因为他们用的是基于类的继承并且对象是由类构建出来

    2022年7月31日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号