matlab图像(亮度变换与线性滤波)

如今,很多人都喜欢摄影。当然也有很多人喜欢对图像进行处理,使图像具有别样的味道。其中用到了很多知识,那现在我就向大家介绍一下简单的图像数字处理。

众所周知,我们的计算机储存图像信息,用到的是一个矩阵。

1:对于黑白图像来说,这是一个二维矩阵。矩阵里面值的大小是0-256之间的unit8格式数字。

2:对于彩色图像,存储时用到的是RGB三原色。也就是用这三种颜色组合来显示这个彩色图像

3:二值图像,这是最简单的二维矩阵构成的图像,仅仅有0和1构成,每个像素只有两种可能性:黑(0)和白(1)。这是绝对的“黑白分明”的图像。比较适合文字,线条图的扫描和储存。

4:索引图像:索引图由两部分构成,数据矩阵和彩色映射矩阵map。由于索引矩阵平时用到的不多,在此不多做介绍。

一:亮度变换

1:亮度转换的意思是直接对图像像素进行处理。用到的是一个非常简单的公式:

g(x,y)=T{f(x,y)};

其中f(x,y)代表的是原图像,x,y分别代表行数和列数。T代表队图像进行处理的操作符。代表的是一个简单的映射关系。

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

这是专用于这项工作的函数,其中的亮度映射关系如下,

[low_in,high_in]----> [low_out,high_out]。gamma作用是调节权值。

下面我给大家举一个例子,下面就是代码和实现效果

warning off
f=imread('tiger.jpg');
g1=imadjust(f,[0;0.2],[1;0]);
subplot(2,2,1);
imshow(g1);
g2=imadjust(f,[0;1],[1;0]);
subplot(2,2,2);
imshow(g2);
g3=imadjust(f,[0;1],[0.5;0]);
subplot(2,2,3);
imshow(g3);
g4=imadjust(f,[0;0.3],[1;0.4]);
subplot(2,2,4);
imshow(g4);

2:线性空间滤波器

空间滤波器可以去掉图像的噪声,处理被污染的图像,比较常见的是拉普拉斯滤波器,使用拉普拉斯滤波器增强图像的基本公式如下

其中倒三角表示拉普拉斯算子,比较复杂,这里只介绍它的计算过程,

在矩阵中进行的就是这样的运算。下面举一个例子,用滤波器对模糊图像进行修复。

代码如下

f=imread('123.jpg'); %读取原图像
h1=fspecial('laplacian',0); %式(13.3)的滤波器,等价于式(13.5)中参数为0
g1=f-imfilter(f,h1); %中心为-4,c=-1,即从原图像中减去拉普拉斯算子处理的结果
h2=[1 1 1; 1 -8 1; 1 1 1]; %式(13.4)的滤波器
g2=f-imfilter(f,h2); %中心为-8,c=-1
subplot(1,3,1),imshow(f) %显示原图像
subplot(1,3,2),imshow(g1) %显示滤波器(13.3)修复的图像
subplot(1,3,3),imshow(g2) 

3:非线性滤波器:篇幅太长了,这个下次再讲吧!


本文作者:南海一号

参考文献:数学建模算法与应用(司守奎,孙兆良)

原文发布于微信公众号 - matlab爱好者(matlabaihaozhe)

原文发表时间:2019-05-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券