灰度变换之灰度线性拉伸(算法1)

試著忘記壹切 提交于 2020-02-21 03:54:28

第一部分:分段(线性变换)函数

摘自百度百科:

灰度拉伸又叫:对比度拉伸,它是最基本的一种灰度变换,算法:使用的是最简单的分段线性变换函数,它的主要思想是提高图像处理时灰度级动态范围

它可以有选择的拉伸某段灰度区间以改善输出图像。如图,所示的变换函数的运算结果是将原图在a到b之间的灰度拉伸到c到d之间。如果一幅图像的灰度集中在较暗的区域而导致图像偏暗,可以用灰度拉伸功能来拉伸(斜率>1)物体灰度区间以改善图像;同样如果图像灰度集中在较亮的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善图像质量

 

 

原理:函数表达式

第二天睡饱了再看这个函数是如何构造的:选取了四个点(0,0) (x1,y1)  (x2,y2)  (255,255)

先计算斜率  然后再点斜式,(x1,y1)  (x2,y2)自己设定

然后可以不断调整整个函数的图像。

分段函数的图像表达式:

代码:

function out = MySegmentLinear(I,x1,x2,y1,y2)
%功能:实现灰度图像的分段线性变换
%理论基础:http://pan.baidu.com/s/1dFoFuSD
%输入参数I是uint8类型的灰度图像数据;

I=im2double(I);
[M,N] = size(I);
out = zeros(M,N);

for i=1:M
    for j=1:N
        if I(i,j)<x1
            out(i,j) = y1 * I(i,j) / x1;
        elseif I(i,j)>x2
            out(i,j) = (I(i,j)-x2)*(1-y2)/(1-x2) + y2;
        else
            out(i,j) = (I(i,j)-x1)*(y2-y1)/(x2-x1) + y1;
        end
    end
end

out=255.*out;
out=uint8(out);

end

  

 第二部分:RGB分别提取出3个图像出来

_________________________________________________________________________________________________

  1. >> image = imread('D:\example.jpg');  
  2. >> image_r=image(:,:,1);  
  3. >> image_g=image(:,:,2);  
  4. >> image_b=image(:,:,3);  
  5. >> zero = zeros(size(image_r));  
  6. >> R=cat(3,image_r,zero,zero);  
  7. >> G=cat(3,zero,image_g,zero);  
  8. >> B=cat(3,zero,zero,image_b);  
  9. >> RGB=cat(3,image_r,image_g,image_b);  
  10. >> subplot(2,2,1),imshow(image_r),title('Red component');  
  11. >> subplot(2,2,2),imshow(image_g),title('green component');  
  12. >> subplot(2,2,3),imshow(image_g),title('blue component');  
  13. >> subplot(2,2,4),imshow(RGB),title('original image');  

 

 

 

 

 第三部分:彩色图像对比度增强

image = imread('90.jpg');   %读取一个图片
image_r=image(:,:,1);      %提取分量组成的图片
image_g=image(:,:,2);
image_b=image(:,:,3);
Sp_r=MySegmentLinear(image_r,0.3,0.7,0.00,1.00); %R分量组成的图片进行对比度拉伸
Sp_g=MySegmentLinear(image_g,0.3,0.7,0.00,1.00);
Sp_b=MySegmentLinear(image_b,0.3,0.7,0.00,1.00);
RGB=cat(3,Sp_r,Sp_g,Sp_b);
imshow(RGB);

 

 效果:

 

原图:

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!