zoukankan      html  css  js  c++  java
  • 图像灰度变换

    一、图像求反

    clear all;
    clc;
    a=imread('pout.tif');

    % 图像取反第一种方法
    f=255-a;

    %图像取反第二种方法
    img=imadjust(a,[0,1],[1,0]);

    %图像取反第三种方法
    g=imcomplement(a);

    二、通过imadjust函数对图像亮度进行处理

    a0=imadjust(a); %把图片a的范围拉伸到[0 1]

    a1=imadjust(a,[0,1],[1,0]);  %图像取反---即负变换

    a2=imadjust(a,[0.3 0.7],[0.1 1]); %从小到大--将图片f 较小的灰度值变化区间扩展为较大的灰度值变化区间

    a3=imadjust(a,[0 1],[0.2 0.6]);

    %从大到小--将图片f较大的灰度值变化区间压缩为较小的灰度值变化区间达到降低图像对比度的作用

    a4=imadjust(a,[],[],2); %只改变gama参数

    figure(1),

    subplot(3,3,1);imshow(a);title('原图像');

    subplot(3,3,2);imshow(a0);title('亮度增强')

    subplot(3,3,3);imshow(a1);title('负变换');

    subplot(3,3,4);imshow(a2);title('从小到大变换,提高对比度');

    subplot(3,3,5);imshow(a3);title('从大到小变换,降低对比度');

    subplot(3,3,6);imshow(a4);title('只改变gama参数');

    三、分段函数实现亮度提升

    clc;

    clear all;

    img = imread('pout.tif');

    %折线点赋值

    f0=0;g0=0;

    f1=60;g1=20;

    f2=180;g2=220;

    f3=255;g3=255;

    r1=(g1-g0)/(f1-f0);  %第一段折线的斜率

    b1=g0-r1*f0; %计算截距1

    r2=(g2-g1)/(f2-f1);  

    b2=g1-r2*f1; 

    r3=(g3-g2)/(f3-f2); 

    b3=g2-r3*f2; 

    [m,n]=size(img);

    for i=1:m

        for j=1:n

            f=img(i,j);

            if(f<f1)

                g(i,j)=r1*f+b1;

            elseif(f>=f1)&&(f<=f2)

                g(i,j)=r2*f+b2;

            elseif(f>=f2)&&(f<=f3)

                g(i,j)=r3*f+b3;

            end

        end

    end

    figure(1),

    subplot(221);imshow(img);title('原图像');

    subplot(222);plot([f0 f1 f2 f3],[g0 g1 g2 g3]);

    axis tight,xlabel('f'),ylabel('g'),title('灰度变换曲线');

    subplot(223);imshow(g);title('灰度变换后');

    四、对数变换 

    f = imread('fruits.jpg');  

    I=rgb2gray(f);

    f = mat2gray(I);% 

    v = 10;  

    g_1 = log2(1 + v*f)/log2(v+1);  

    v = 30;  

    g_2 = log2(1 + v*f)/log2(v+1);  

    v = 200;  

    g_3 = log2(1 + v*f)/log2(v+1);  

      

    figure(),

    subplot(2,2,1);  

    imshow(f,[0 1]);  

    xlabel('a).Original Image');  

    subplot(2,2,2);  

    imshow(g_1,[0 1]);  

    xlabel('b).Log Transformations v=10');  

    subplot(2,2,3);  

    imshow(g_2,[0 1]);  

    xlabel('c).Log Transformations v=100');  

    subplot(2,2,4);  

    imshow(g_3,[0 1]);  

    xlabel('d).Log Transformations v=200');            

    % 调整gama参数的几种情况% a0=imadjust(a); %把图片a的范围拉伸到[0 1]% a1=imadjust(a,[0,1],[1,0]);  %图像取反---即负变换% a2=imadjust(a,[0.3 0.7],[0.1 1]); %从小到大--将图片f 较小的灰度值变化区间扩展为较大的灰度值变化区间% a3=imadjust(a,[0 1],[0.2 0.6]);% %从大到小--将图片f较大的灰度值变化区间压缩为较小的灰度值变化区间达到降低图像对比度的作用% a4=imadjust(a,[],[],2); %只改变gama参数

  • 相关阅读:
    四、django rest_framework源码之频率控制剖析
    Ubuntu14.04配置记录
    尝试开始写博客
    用IDEA把SpringBoot项目打成jar发布项目
    IDEA创建springboot项目部署到远程Docker
    springboot 快速部署
    最详细的 Spring Boot 多模块开发与排坑指南
    SpringMVC的工作原理
    Dubbo最详解
    Zookeeper入门看这篇就够了
  • 原文地址:https://www.cnblogs.com/geeker-xjl/p/9581651.html
Copyright © 2011-2022 走看看