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


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

  • 相关阅读:
    ES6实现小案例--自定义弹框
    ES6 字符串、数值与布尔值、函数参数的解构赋值
    ES6 对象的解构赋值
    ES6 数组的解构赋值
    CentOS7安装mysql后无法启动服务,提示Unit not found
    CentOS7安装MySQL报错,解决Failed to start mysqld.service: Unit not found
    redis修改密码
    redis入门
    如何在本地远程连接linux虚拟机上面的mysql
    Linux下彻底卸载mysql详解
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5083130.html
Copyright © 2020-2023  润新知