码迷,mamicode.com
首页 > 其他好文 > 详细

图像灰度变换

时间:2018-09-04 00:14:40      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:lse   imshow   tle   取反   size   函数实现   压缩   对比度   img   

 

一、图像求反

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

图像灰度变换

标签:lse   imshow   tle   取反   size   函数实现   压缩   对比度   img   

原文地址:https://www.cnblogs.com/geeker-xjl/p/9581651.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!