项目场景:Matlab数字图像处理之灰度线性变换
线性灰度变换函数是一个一维线性函数,格式有:tif,png,若图片格式为jpg形式的,要转化为灰度图像形式,利用Matlab库中的rgb2gray函数进行转换,否则会报错:出错 imhist>parse_inputs (line 278)、validateattributes(a, {‘double’,‘uint8’,‘int8’,‘logical’,‘uint16’,‘int16’,‘single’,‘uint32’, ‘int32’}, …
基于线性变换参数方程:S=Fa.*I+Fb/255的图像处理变换
(I为输入图像,S为处理后的输出图像)
一.原图像、以及直方图
代码如下:
close all;%关闭所有的图像窗口
clc;%清除对话框内所有数据
clear all;%清除所有参数,可指定清除参数
I=imread(‘coins.jpg’);
I=rgb2gray(I);
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),’.’),title(‘原图像’);%显示原图像的直方图
二.增加对比度(Fa>1)、减少对比度(Fa<1)、增加亮度(Fa=1且Fb向上平移)、反相显示(相当于镜像,条件:Fa=-1,Fb=255)
代码如下:
%增加对比度,Fa>1
Fa=2,Fb=-55;%线性参数
S=Fa.*I+Fb/255;%线性方程
figure(3);
subplot(2,2,1),imshow(S),title(‘Fa=2 Fb=-55 增加对比度’);
figure(4);
subplot(2,2,1),[H x]=imhist(S,64);
stem(x,(H/M/N),’.’),title(‘Fa=2 Fb=-55 增加对比度’);
%减少对比度,Fa<1
Fa=0.5,Fb=-55;%线性参数
S=Fa.*I+Fb/255;%线性方程
figure(3);
subplot(2,2,2),imshow(S),title(‘Fa=0.5 Fb=-55 减少对比度’);
figure(4);
subplot(2,2,2),[H x]=imhist(S,64);
stem(x,(H/M/N),’.’),title(‘Fa=0.5 Fb=-55 减少对比度’);
%增加亮度,Fa=1,Fb向上平移
Fa=1,Fb=55;%线性参数
S=Fa.*I+Fb/255;%线性方程
figure(3);
subplot(2,2,3),imshow(S),title(‘Fa=1 Fb=55 线性平移增加亮度’);
figure(4);
subplot(2,2,3),[H x]=imhist(S,64);
stem(x,(H/M/N),’.’),title(‘Fa=1 Fb=55 线性平移增加亮度’);
%反相显示,相当于镜像,条件:Fa=-1,Fb=255
Fa=-1,Fb=255;%线性参数
S=Fa.*I+Fb/255;%线性方程
figure(3);
subplot(2,2,4),imshow(S),title(‘Fa=-1 Fb=255 反相显示’);
figure(4);
subplot(2,2,4),[H x]=imhist(S,64);
stem(x,(H/M/N),’.’),title(‘Fa=-1 Fb=255 反相显示’);
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
上述代码所见依自己所学