第⼀部分:分段(线性变换)函数摘⾃百度百科:
灰度拉伸⼜叫:拉伸,它是最基本的⼀种变换,算法:使⽤的是最简单的分段函数,它的主要思想是提⾼图像处理时的。
它可以有选择的拉伸某段灰度区间以改善输出图像。如图,所⽰的变换函数的运算结果是将原图在a到b之间的灰度拉伸到c到d之间。如果⼀幅图像的灰度集中在较暗的区域⽽导致图像偏暗,可以⽤灰度拉伸功能来拉伸(>1)物体灰度区间以改善图像;同样如果集中在较亮的区域⽽导致图像偏亮,也可以⽤灰度拉伸功能来压缩(斜率<1)物体灰度区间以改善。
原理:函数表达式
第⼆天睡饱了再看这个函数是如何构造的:选取了四个点(0,0) (x1,y1) (x2,y2) (255,255)
先计算斜率 然后再点斜式,(x1,y1) (x2,y2)⾃⼰设定
然后可以不断调整整个函数的图像。分段函数的图像表达式:
代码:12345678
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);
8out = zeros(M,N);9
10for i=1:M11 for j=1:N12 if I(i,j) 15 out(i,j) = (I(i,j)-x2)*(1-y2)/(1-x2) + y2; else16 out(i,j) = (I(i,j)-x1)*(y2-y1)/(x2-x1) + y1;17 end18 end19end20 21out=255.*out;out=uint8(out);22 23end2425 第⼆部分: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); 效果: 原图: 因篇幅问题不能全部显示,请点此查看更多更全内容