matlab批量生成灰度图像_数字图像处理matlab 灰度线性变换

本文介绍了如何使用MATLAB进行批量生成灰度图像的线性变换,详细解析了灰度取值区间及线性变换公式,包括扩展和缩小动态范围的方法。
摘要由CSDN通过智能技术生成

输入图像的灰度取值区间为f(m,n)∈[a,b]

线性变换后输出图像的灰度取值区间为g(m,n)∈[c,d],则变换过程的表达式为:

g(m,n)=c+k[f(m,n)-a] 其中k=(d-c)/(b-a),称为变换函数的斜率

扩展动态范围:

fd1278b789a107981757f88aff0dc5aa.png

改变取值区间:

d205120646c35d4328ed4bc2ff3645b3.png

缩小动态范围:

216a0ebe055720748a6ab3f78f0b67fa.png

举个例子:

%假定图像的灰度取值范围是[0, 240],试求一个能将灰度范围从[0, 120]线性压缩至[0, 80][120, 240]线性移位至[80, 200]的灰度变换函数,并画出该灰度变换函数的函数图
x=(0:1:240);
a=0;
b=120;
c=0;
d=80;
e=240;
f=200;
k=(d-c)./(b-a);

y=(c+k.*(x-a)).*(b>x&x>a)+((x-b)/(b)*b+d).*(e>=x&x>=b);

plot(x,y);
I=imread('firework.JPG');
J=imadjust(I,[0.1 0.5],[]);
% subplot(1,2,1),imshow(I);
% subplot(1,2,2),imshow(J);
I_gray = rgb2gray(I);
% I_gray_uint8=uint8(I_gray);
I_gray_double=double(I_gray);
[rows,cols]=size(I_gray_double);
for i =1:rows
     for j=1:cols
          if I_gray_double(i,j)<50
            I_gray_double_fin(i,j)=(I_gray_double(i,j)-0).*((100-0)./(50-0))+0;                        
          else
              I_gray_double_fin(i,j)=I_gray_double(i,j);
%          if I_gray_uint8(i,j)
%              I_gray_uint8(i,j)=225-I_gray_uint8(i,j);
%         
         end
     end
end
fin_I_gray=I_gray_double_fin./255;


% fin_I = rgb(fin_I_gray);
 subplot(1,2,2),imshow( fin_I_gray);
subplot(1,2,1),imshow(I_gray)             
    

a8bde96d03e8c6914608bcfc338ecef3.png
线性变换前后(右为原图)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值