数字图像处理 第二章

  • 第二章:灰度变换与空间滤波
    • 2.2:灰度变换函数
      • 2.2.1函数imadjust 和 strethclim
      • 2.2.2对数及对比度拉伸变换
      • 2.2.3指定任意灰度变换
      • 2.2.4用于灰度变换的一些使用M函数
    • 2.3 直方图处理与函数绘图
      • 2.3.1生成并绘制图像直方图
      • 2.3.2直方图均衡
    • 2.4 空间滤波
      • 2.4.1线性空间滤波
      • 2.4.2非线性空间滤波
    • 2.5图像处理工具箱的标准空间滤波器
      • 2.5.1线性空间滤波器
      • 2.5.2 非线性空间滤波器

第二章:灰度变换与空间滤波

2.2:灰度变换函数

2.2.1函数imadjust 和 strethclim

函数imadjust是一个基本的图像处理工具箱函数,用于对灰度级图像进行灰度变换。一般语法格式:

g = imadjust(f, [low_in high_in], [low_out high_out] ,gamma)

数字图像处理 第二章_第1张图片

例2.1:使用函数imadjust
原图:

数字图像处理 第二章_第2张图片

负片:
数字图像处理 第二章_第3张图片

负片同样可以用函数g = imcomplement(f)得到

其他:

数字图像处理 第二章_第4张图片

数字图像处理 第二章_第5张图片

使用函数stretchlim:
有时,能够自动的使用函数imadjust而不必关心上面讨论的低参数或高参数是非常有用的,这时可以使用函数strethcilm

Low_High = strtchlim(f)

其中,Low_High是一个两元素向量,该向量由一个低限和一个高限组成,用于实现对比度拉伸。

数字图像处理 第二章_第6张图片

数字图像处理 第二章_第7张图片

可以看到这一操作增强了负片图像的对比度。

2.2.2对数及对比度拉伸变换

对数和对比度拉伸变换时动态范围操作的基本工具。对数变换通过如下表达式实现:

这里写图片描述

这里写图片描述

数字图像处理 第二章_第8张图片
例2.2:
利用对数变换减小动态范围

数字图像处理 第二章_第9张图片

2.2.3指定任意灰度变换

若使用取值范围为[0 1]的浮点数来表示输入图像和输出图像,则会大大简化程序。这意味着列向量T的所有元素必须是在相同范围内的浮点数。实现灰度映射的一种简单方法是使用函数interp1,有如下语法形式:

g = interp1(z, T, f)

其中f是输入图像,g是输出图像,T是刚才说的列向量,z是长度与T相同的列向量,其形成方式如下:

z = linspace(0, 1, numel(T))';

2.2.4用于灰度变换的一些使用M函数

为检测输入到M函数的参量数目,可使用函数nargin,

n = nargin

它返回输入到M函数的参量的实际数量。类似的,函数nargout用于M函数的输出,语法为:

n - nargout

例如,假设执行如下假定的M函数:

>> T = testhv(4,5);

在函数体重使用函数nargin将返回2,使用nargout将返回1。

函数nargchk:

数字图像处理 第二章_第10张图片

2.3 直方图处理与函数绘图

2.3.1生成并绘制图像直方图

一副数字图像在[0,G]范围内总共有L个灰度级,其直方图定义为下列离散函数:

这里写图片描述
在处理图像直方图的工具箱中,核心函数是imhist,其基本语法如下:

h = imhist(f, b)

其中,f为输入图像,h为其直方图,b是用来形成直方图的“容器”的数目(默认256)

例2.4 计算并绘制直方图。

在屏幕上绘制直方图最简单的方法就是使用没有规定输出的函数imhist:

>> imhist(f);

数字图像处理 第二章_第11张图片

数字图像处理 第二章_第12张图片
bar函数:
数字图像处理 第二章_第13张图片

stem函数:

数字图像处理 第二章_第14张图片

plot函数:
数字图像处理 第二章_第15张图片

2.3.2直方图均衡

直方图均衡由工具箱中的函数histeq实现,其语法为

g = histeq(f,nlev);

其中f为输入图像,nlev是为输出图像设定的灰度级数。默认nlev = 64。

f = imread('ColdWinter.jpg');
>> imshow(f); % figure1
>> figure, imhist(f); % figure2
>> ylim('auto')
>> g = histeq(f,256);
>> figure, imshow(g); % figure3
>> figure, imhist(g); % figure4

数字图像处理 第二章_第16张图片

2.4 空间滤波

2.4.1线性空间滤波

工具箱使用函数imfilter来实现线性空间滤波,该函数的语法如下:

g = imfilter(f, w, filtering_mode, Bountdry_options, size_options)

其中,f为输入图像,w为滤波模板,g为滤波后的结果,其他参数在表中

数字图像处理 第二章_第17张图片

,最常见的语法是:

g = imfilter(f, w, 'replicate')

2.4.2非线性空间滤波

数字图像处理 第二章_第18张图片

其中,m和n表示滤波区域的维数。’sliding’表明处理过程是m×n区域在输入图像f中逐个像素地华东,fun是一个函数句柄,parameters是函数可能用到的参数,以逗号隔开。

数字图像处理 第二章_第19张图片

fp = padarray(f, [3 2], 'replicate', 'post');

将产生结果:

数字图像处理 第二章_第20张图片

2.5图像处理工具箱的标准空间滤波器

2.5.1线性空间滤波器

工具箱支持许多预定义的二维线性空间滤波器。这些滤波器可以通过函数fspecial得到,该函数生成一个滤波模板w,语法为:

w = fspecial('type', parameters)

其中,’type’指定滤波器的类型,parameters进一步定会以规定的滤波器。

数字图像处理 第二章_第21张图片

数字图像处理 第二章_第22张图片

使用函数imfilter实现拉普拉斯滤波器

w = [0 1 0;1 -4 1; 0 1 0];
>> g1 = imfilter(f, w, 'replicate');
>> imshow(g1, [ ]);
>> imshow(f);
>> figure, imshow(g1, []);
>> f2 = im2double(f);
>> g2 = imfilter(f2,w,'replicate');
>> figure, imshow(g2,[]);
>> g = f2-g2;
>> figure, imshow(g);

数字图像处理 第二章_第23张图片

2.5.2 非线性空间滤波器

二维中值滤波器的专用实现:

g = medfilt2(f, [m n], padopt);

其中,数组[m n]定义一个大小为m×n的邻域,padopt指定三个可能的边界填充选项之一:’zeros’(默认),’symmetric’指出f按照镜像反射方式对称地沿边界扩展,’indexed’表示若f是double类的则用1填充,否则用0填充。默认形式:

g = medfilt2(f);

利用函数medfilt2进行中值滤波

>> f = imread('ColdWinter.jpg');
>> fs = rgb2gray(f);
>> imshow(fs);
>> fn = imnoise(fs, 'salt & pepper', 0.2);
>> imshow(fn);
>> gm = medfilt2(fn);
>> gms  = medfilt2(fn, 'symmetric');
>> figure,imshow(f);
>> figure,imshow(fs);
>> figure,imshow(fn);
>> figure,imshow(gm);
>> figure,imshow(gms);

数字图像处理 第二章_第24张图片

你可能感兴趣的:(数字图像处理)