• 点运算


    调整亮度/对比度

    线性函数



    结论:如果一幅图像集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来扩展(斜率>1)物体的灰度区间以改善图像;同样,如果图像的灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善图像质量。
    分段线性函数的作用:实际上是增强了原图各部分的反差,即增加图像中感兴趣的灰度区域,相对抑制那些不感兴趣的灰度区域。

    非线性函数


    内置函数


    Matlab提供了stretchlim()函数,可以自动计算图像灰度值的最小值和最大值构成的区间,即需调整的范围。

    直方图

    灰度统计直方图

    直方图修正

    直方图均衡化

    直方图规定化

    理想情况下,直方图均衡化实现了图像灰度的均衡分布,对提高图像对比度、提升图像亮度具有明显的作用。在实际应用中,有时并不需要图像的直方图具有整体的均匀分布,而是希望直方图与规定要求的直方图一致,这就是直方图规定化。它可以人为地改变原始图像直方图的形状,使其成为某个特定的形状,是用于产生处理后有特殊直方图的图像处理方法。
    在Matlab中没有直接实现直方图规定化的函数。但是可以通过imhist和histeq两个函数的结合使用来实现。

    I=imread('pout.tif');
    subplot(2,2,1),imshow(I);
    title('模板图像');
    subplot(2,2,2),imhist(I);
    title('模板图像的直方图');
    J=imread('tire.tif');
    I_M=imhist(I);
    K=histeq(J,I_M);
    subplot(2,2,3),imshow(K);
    title('规定化后的图像');
    subplot(2,2,4),imhist(K);
    

    彩色图像点运算

    线性/非线性变换

    sourceImage=im2double(imread('landscape.jpg'));
    J=rgb2hsi(sourceImage);%RGB空间转换到HSI空间
    H=J(:,:,1); %提取色调分量
    S=J(:,:,2); %提取饱和度分量
    I=J(:,:,3); %提取亮度分量 
    %利用灰度变换,自动调整亮度分量的灰度范围
    M=stretchlim(I); 
    I_enhancing1=imadjust(I,M,[0 1],0.4); %亮度增大    
    enhancingImage1=cat(3,H,S,I_enhancing1);%三分量合成
    rgb1=hsi2rgb(enhancingImage1);%HSI空间转换到RGB空间 
    I_enhancing2=imadjust(I,M,[0 1],4); %亮度降低 
    enhancingImage2=cat(3,H,S,I_enhancing2);%三分量合成
    rgb2=hsi2rgb(enhancingImage2);%HSI空间转换到RGB空间 
    subplot(1,3,1);imshow(sourceImage);title('原始图像');
    subplot(1,3,2);imshow(rgb1);title('HSI空间亮度增大');
    subplot(1,3,3);imshow(rgb2);title('HSI空间亮度降低');
    

    直方图均衡化

    sourceImage=im2double(imread('people.jpg'));
     J=rgb2hsi(sourceImage);
     H=J(:,:,1);
     S=J(:,:,2);
     I=J(:,:,3);
     %利用直方图均衡化,调整亮度分量的灰度范围
     I_enhancing=histeq(I);   
     enhancingImage=cat(3,H,S,I_enhancing);
     rgb=hsi2rgb(enhancingImage);
     subplot(1,2,1);imshow(sourceImage);title('原始图像');
     subplot(1,2,2);imshow(rgb);title('直方图均衡化后图像');
    
    

    直方图规定化

     sourceImage=im2double(imread('people.jpg'));
     J=rgb2hsi(sourceImage);
     H=J(:,:,1);%原始图像的色调分量
     S=J(:,:,2);%原始图像的饱和度分量
     I=J(:,:,3);%原始图像的亮度分量
     %利用直方图规定化,设置亮度分量的灰度范围
     object_M = im2double(imread('template.jpg'));
     J_M=rgb2hsi(object_M);
     H_M=J_M(:,:,1);%模板图像的色调分量
     S_M=J_M(:,:,2);%模板图像的饱和度分量
     I_M=J_M(:,:,3);%模板图像的亮度分量
     I_M_imhist = imhist(I_M);%模板图像的直方图
     I_enhancing= histeq(I,I_M_imhist);%直方图规定化处理
     enhancingImage=cat(3,H,S,I_enhancing);
     rgb=hsi2rgb(enhancingImage);
     subplot(1,3,1);imshow(sourceImage);title('原始图像');
     subplot(1,3,2);imshow(object_M);title('模板图像');
     subplot(1,3,3);imshow(rgb);title('直方图规定化后图像');
    
  • 相关阅读:
    使用 Spring data redis 结合 Spring cache 缓存数据配置
    Spring Web Flow 笔记
    Linux 定时实行一次任务命令
    css js 优化工具
    arch Failed to load module "intel"
    go 冒泡排序
    go (break goto continue)
    VirtualBox,Kernel driver not installed (rc=-1908)
    go运算符
    go iota
  • 原文地址:https://www.cnblogs.com/Zigzag37/p/15302353.html
Copyright © 2020-2023  润新知