%% 关于subplot 和imadjust 的练习
clc
clear
f=imread('image\breast.tif');
subplot(2,3,1); %将几张图片分区域显示到一张图里面
imshow(f);
g2 = imadjust(f,[0 1],[1 0]);%imadjust(I,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT]);
%这个函数是将LOW_IN映射到LOW_OUT,将HIGH_IN映射到HIGH_OUT,
%这些参数都是强度值,所以其大小在0到1之间。其它的截断。
%如果imadjust(f,[0,1],[1,0])则相当于imcomplement(f),相当于灰度图像反转。
%如果第4个参数gammar存在的话,则可以控制器映射曲线是凹凸型的,具体的见help命令。
subplot(2,3,2);
imshow(g2);
g3 = imcomplement(f);
subplot(2,3,3);
imshow(g3);
g4 = imadjust(f,[0.5 0.75],[0,1]);
subplot(2,3,4);
imshow(g4);
g5 = imadjust(f,[],[],2);
subplot(2,3,5);
imshow(g5);
%% 直方图imhist
clc
clear
close all
f=imread('image\breast.tif');
subplot(121),imshow(f);
subplot(122),imhist(f),
axis tight %axis([xmin xmax ymin ymax]) 分别表示x轴和y轴的坐标的刻度
%axis tight是使坐标系的最大值和最小值和你的数据范围一致
title('hist');
%% 直方图均衡化
clc
clear
close all
f=imread('image\moon.tif');
subplot(121) ,imshow(f) ,subplot(122) ,imhist(f)
ylim('auto');
g1 = histeq(f);
%histeqs函数完成直方图均衡功能,其第二个参数表示均衡是bin的个数。可以使用函数xlim和ylim函数自动或者手动设置坐标轴的取值范围和刻度线。
figure,subplot(121),imshow(g1),subplot(122),imhist(g1)
ylim('auto');
g2 = histeq(f,8);
figure,subplot(121),imshow(g2),subplot(122),imhist(g2)
ylim('auto');
%% imfilter线性空间滤波
clc
clear
close all
f=imread('image\Fig0316(3)(third_from_top).tif');
f = im2double(f);
imshow(f);
w=ones(31);
gd = imfilter(f,w);
figure,imshow(gd,[]);
gr = imfilter(f,w,'replicate'); %复制外边界的值来扩展
figure,imshow(gr,[])
gc = imfilter(f, w, 'circular'); %用周期进行扩展
f8 = im2uint8(f);
gr8 = imfilter(f8, w, 'replicate');
figure,imshow(gr8,[]);
%% 线性空间滤波
clc
clear
close all
f=imread('image\moon.tif');
imshow(f);
w = fspecial('laplacian',0);
g1 = imfilter(f,w,'replicate');
figure,imshow(g1,[]);
f2 = im2double(f);
g2 = imfilter(f2,w,'replicate');
figure,imshow(g2,[]);
g = f2 - g2;
figure,imshow(g,[]);
%% 中值滤波
clc
clear
close all
f=imread('image\moon.tif');
subplot(121),imshow(f);
fn = imnoise(f,'salt & pepper',0.2);
subplot(122),imshow(fn);
gm = medfilt2(fn);
figure,subplot(121),imshow(gm);
gms = medfilt2(fn,'symmetric');
subplot(122),imshow(gms)
%% 非线性空间滤波器ordfilt2
clc
clear
close all
f=imread('image\moon.tif');
subplot(131),imshow(f);
fn = imnoise(f,'salt & pepper',0.2);
subplot(132),imshow(fn);
[m ,n] = size(f);
g = ordfilt2(f,median(1:3*3),ones(3,3));
subplot(133),imshow(g);
【Matlab数字图像处理】(一)时域处理
最新推荐文章于 2024-02-29 09:37:58 发布