您的位置:首页 > 编程语言 > MATLAB

[mtalab图像处理] 灰度的线性变换

2014-03-11 16:00 176 查看
 clc;

 clear all;

I= imread('cameraman.tif');        % 读入原图像 

 

I = im2double(I);           % 转换数据类型为double 

[M,N] = size(I);            % 计算图像面积 

 

figure(1);              % 打开新窗口 

imshow(I);              % 显示原图像 

title('原图像'); 

 

figure(2);                  % 打开新窗口 

[H,x] = imhist(I, 64);      % 计算64个小区间的灰度直方图 

stem(x, (H/M/N), '.');      % 显示原图像的直方图  直方图做了归一化(H/M/N)

title('直方图原图像'); 

 

% 增加对比度 

Fa = 2; Fb = -55; 

O = Fa .* I + Fb/255;   %Fa>1时,输出图像的对比度将增大;Fa<1时,输出图像对比度将减小。

                       %Fa=1且Fb非零时,所有像素的灰度值上移或下移,使整个图像更暗或

                       %更亮。Fa<0,暗区变亮,亮区变暗。 实际处理图像是Fa,Fb是通过计算出来的

 

figure(3); 

subplot(2,2,1); 

imshow(O); 

title('Fa = 2 Fb = -55 增加对比度图像'); 

 

figure(4); 

subplot(2,2,1); 

[H,x] = imhist(O, 64); 

stem(x, (H/M/N), '.'); 

title('Fa = 2 Fb = -55 增加对比度直方图'); 

 

% 减小对比度 

Fa = 0.5; Fb = -55; 

O = Fa .* I + Fb/255; 

 

figure(3); 

subplot(2,2,2); 

imshow(O); 

title('Fa = 0.5 Fb = -55 减小对比度图像'); 

 

figure(4); 

subplot(2,2,2); 

[H,x] = imhist(O, 64); 

stem(x, (H/M/N), '.'); 

title('Fa = 0.5 Fb = -55 减小对比度直方图'); 

 

% 线性增加亮度 

Fa = 1; Fb = 55; 

O = Fa .* I + Fb/255; 

 

figure(3); 

subplot(2,2,3); 

imshow(O); 

title('Fa = 1 Fb = 55 线性平移增加亮度图像'); 

 

figure(4); 

subplot(2,2,3); 

[H,x] = imhist(O, 64); 

stem(x, (H/M/N), '.'); 

title('Fa = 1 Fb = 55 线性平移增加亮度直方图'); 

 

% 反相显示   黑变白 白变黑

Fa = -1; Fb = 255; 

O = Fa .* I + Fb/255; 

 

figure(3); 

subplot(2,2,4); 

imshow(O); 

title('Fa = -1 Fb = 255 反相显示图像'); 

 

figure(4); 

subplot(2,2,4); 

[H,x] = imhist(O, 64); 

stem(x, (H/M/N), '.'); 

title('Fa = -1 Fb = 255 反相显示直方图'); 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 图像处理