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 反相显示直方图');
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 反相显示直方图');