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参数

  • 相关阅读:
    Java集合框架--List 遍历
    Java集合框架--List 类
    Leetcode 239 Sliding Window Maximum (指定滑动窗最大值) (滑动窗口)
    Vim配置
    子字符串模板 (双指针, 滑动窗口)
    Leetcode 76 Minimum Window Substring. (最小窗口子字符串) (滑动窗口, 双指针)
    Leetcode 3 Longest Substring Without Repeating Characters. (最长无重复字符子串) (滑动窗口, 双指针)
    一切从赞美开始
    Leetcode 10 regular expression matching (正则表达式匹配) (动态规划)
    Leetcode 5 Longest Palindromic Substring (最长回文子字符串)(动态规划)
  • 原文地址:https://www.cnblogs.com/geeker-xjl/p/9581651.html
Copyright © 2011-2022 走看看