图像算法学习 - 图像线性拉伸实现对比度增强

% *************************************************************************
%  Author   : A29850706 
%  Created  : 2021.xx.xx
%  Versions : v1.0
%  Function :
%  History  : 2021.xx.xx - 初次创建文件 
% *************************************************************************
clear;  close all;  clc;  warning off all;  feature jit off;
 
srcImg  = imread("1.jpg"); 

DstImg1 = FuncGrayStretch(srcImg, 8, 1);

Dst1 = DstImg1(:,:,1);
Dst2 = DstImg1(:,:,2);
Dst3 = DstImg1(:,:,3);

figure,imshow([srcImg uint8(DstImg1)],[]); 

% *************************************************************************

function DstImg = FuncGrayStretch(SrcImg, BitBum, mode)
% Function : 图像的线性拉伸 - 实现图像的对比度增强
% SrcImg   : 彩色图像信息
% BitBum   : BitBum : 灰度级
% mode     : 模式:0:灰度图像 , 1:彩色图像
% History  : 2021.xx.xx - 初次创建
% *************************************************************************
% 实现公式 :  F(i,j)原始图像  mingGray maxGray分别为最小灰度、最大灰度
%            D(i,j) = 255*(F(i,j) - mingGray)/(maxGray - mingGray)
switch mode 
    case 0
        PixelMin = min(SrcImg(:));
        PixelMax = max(SrcImg(:));
        DstImg   = (2^BitBum - 1)*(SrcImg - PixelMin)/(PixelMax - PixelMin);
    case 1
        SrcImg = im2double(SrcImg);
    	PixelMin1 = min(min(SrcImg(:,:,1)));
        PixelMax1 = max(max(SrcImg(:,:,1)));
      	PixelMin2 = min(min(SrcImg(:,:,2)));
        PixelMax2 = max(max(SrcImg(:,:,2)));
      	PixelMin3 = min(min(SrcImg(:,:,3)));
        PixelMax3 = max(max(SrcImg(:,:,3)));
        DstImg(:,:,1) = (2^BitBum - 1)*(SrcImg(:,:,1) - PixelMin1)/(PixelMax1 - PixelMin1); 
        DstImg(:,:,2) = (2^BitBum - 1)*(SrcImg(:,:,2) - PixelMin2)/(PixelMax2 - PixelMin2);
        DstImg(:,:,3) = (2^BitBum - 1)*(SrcImg(:,:,3) - PixelMin3)/(PixelMax3 - PixelMin3);
	otherwise
        
end  

图像算法学习 - 图像线性拉伸实现对比度增强_第1张图片

你可能感兴趣的:(01,-,Matlab笔记,算法,matlab)