2019-08-22 15:37:17 fengshengwei3 阅读数 30

目录

 

一 基本概念

二 空间域滤波的计算过程

三 常见的灰度变换

1.图像翻转

2.对数变换

3.Gamma变换

4.直方图均衡化


一 基本概念

问:什么空间域?

答:“空间域”指图像平面本身,即:图像中的每个像素单元

 

问:为什么要用“空间域”这种难解的名字?

答:“空间域”主要是为了区别于“变换域”,“变换域”是将图像转换到其他的 域(如频率域),在变换域做完处理之后再通过反变换的方式转换回来。

 

问:“空间域”图像处理包含哪些方面?

答:“空间域”图像处理主要包括【灰度变换】和【空间域滤波】

 

问:“空间域”滤波怎么理解?

答:滤波名词出自于信号系统,从图像来说,图像是二维数据,二维数据传输的时候 是逐行传输的,对应于信号处理,就是一个连续的波形,对波形做一些处理,按预期 过滤掉波形中的某些成分,所以形象地表示为”滤波“。Tips: 所谓滤波就是对图像进行处理,比如:降噪,平滑等操作。

 

二 空间域滤波的计算过程

说明:用kernel 对图像做卷积

三 常见的灰度变换

1.图像翻转

 

2.对数变换

3.Gamma变换

4.直方图均衡化

由于图像的对比度不强,所以图像整体上较暗或较亮 (即图像灰度集中在直方图的两端),为了增加对比度,让图像 看起来更清楚,所以有了直方图均衡化

 

2017-10-28 12:54:38 yeler082 阅读数 11501

  空间域与频率域为我们提供了不同的视角。在空间域中,函数自变量(x,y)被视为二维空间中的一个点,数字图像f(x,y)即为一个定义在二维空间中的矩形区域上的离散函数;换一个角度,如果将f(x,y)视为幅值变化的二维信号,则可以通过某些变换手段(如傅里叶变换、离散余弦变换、沃尔什变换和小波变换等)在频域下对图像进行处理了  因为在频率域就是一些特性比较突出,容易处理。比如在空间图像里不好找出噪声的模式,如果变换到频率域,则比较好找出噪声的模式,并能更容易的处理。

具体名词解释如下:

空间域 英文: spatial domain。 释义: 又称图像空间(image space)。由图像像元组成的空间。在图像空间中以长度(距离)为自变量直接对像元值进行处理称为空间域处理。

频率域。 英文: spatial frequency domain。 释: 以频率(即波数)为自变量描述图像的特征,可以将一幅图像像元值在空间上的变化分解为具有不同振幅、空间频率和相位的简振函数的线性叠加,图像中各种频率成分的组成和分布称为空间频谱。这种对图像的频率特征进行分解、处理和分析称为频率域处理或波数域处理。

二者关系:

  空间域与频率域可互相转换。在频率域中可以引用已经很成熟的频率域技术,处理的一般步骤为:①对图像施行二维离散傅立叶变换或小波变换,将图像由图像空间转换到频域空间。②在频率域中对图像的频谱作分析处理,以改变图像的频率特征。即设计不同的数字滤波器,对图像的频谱进行滤波。

  空间域处理的应用可以参考:http://www.cnblogs.com/kangronghu/p/6266637.html

https://wenku.baidu.com/view/b97f42eb172ded630b1cb6bc.html?pn=50

  频率域处理主要用于与图像空间频率有关的处理中。如图像恢复、图像重建、辐射变换、边缘增强、图像锐化、图像平滑、噪声压制、频谱分析、纹理分析等处理和分析中。

2019-07-19 23:57:54 qq_33208851 阅读数 113


图像处理系列笔记: https://blog.csdn.net/qq_33208851/article/details/95335809


1. 空间域处理

空间域方法是对图像的像素操作的过程.“空间域” 一词是指图像平面自身, 这类方法是以对图像的像素直接处理为基础.空间域处理可由下式定义:

g(x,y)=T[f(x,y)]

在这里插入图片描述
T是对f的一种操作,定义在(x,y)的邻域,另 外,T能对输入图像集进行操作.

1.1 灰度级变换(强度映射)

IT操作最简单的形式是邻域为1x1的尺度 (即一单个像素)。在这种情况下(仅依赖于f在(x,y)点的值,T操作成为灰度级变换函数(也叫做强度映射),形式为:

s=T(r)

s和r是所定义的变量,分别是f(x,y)和g(x,y)在任意点(x,y)的灰度值。

1.2 二值图像变换

在这里插入图片描述
T®如有图(a)所示的形状,这种变换将会产生比原始图像更高的对比度,进行变换时,在原始图像中,灰度级低于m时变暗,而灰度级在m以上时变亮。在极限情况下,如图(b)所示,T( r)产生了二值图像

3. 图像灰度变换

在这里插入图片描述

3.1 图像反转

灰度级范围为丨0,L-1丨的图像反转可由示于前图的反比变换获得,表达式为:

s=L-1-r

用这种方式倒转图像的强度产生图像反转的对等图像。这种处理尤其适用于增强嵌入于图像暗色区域的白色或灰色细节,特别是当黑色面积占主导地位时:

在这里插入图片描述

3.2 对数变换

对数变换的一般表达式为:

s =c·log (1+r )

其 中 c 是 一 个 常 数 ,并 假 设 r ≥0 .对 数 曲 线 如 所
示 :
在这里插入图片描述

此 种 变 換 使 一 窄 带 低灰度输入图像值映射为一 宽 带 输 出 值 .相 对 的 是 输 入 灰 度 的 高 调 整 值 .可 以 利用这种变换来扩展被压 缩的高值图像中的暗像。
在这里插入图片描述

3.3 幂次变换

在这里插入图片描述
幂次变换的基本形式:

s =crγ

其中,c和γ为正常数。γ>1或γ<1对图像的处理有相反的效果。
在这里插入图片描述

3.4 直方图

直方图是多种空间域处理技术的基础。灰度级为(0,L-l)范围的数字图像的直方图是 离 散 函 数

h(rk)=nk

这 里 rk 是 第 k级灰度,nk 是图像中灰度级为 rk 的像素个数。经常以图像中像素的总数(用n表示)来除它的每一个值得到归一化(和为1)的直方图。因此,一个归一化的直方图由 :

P(rk)=nk/n

给出,这里k=0,1,…,L-1.简单地说,P(rk)给出了灰度级为 rk发生的概率估计值。

3.4.1 直方图与图像的关系

  • 直方图与图像的明暗度
    在这里插入图片描述
    暗色图像的直方图的组成成分集中在灰度级低(暗)的一侧
    明亮图像的直方图的组成成分集中在灰度级高(亮)的一侧

  • 直方图与图像的对比度
    在这里插入图片描述
    低对比度图像的直方图窄而集中于灰度级的中部
    高对比度图像的直方图宽且分布基本均匀,只有少数垂线比其他高许多

3.4.2 直方图均衡化的目的

由直方图与图像的对比度关系中可以看出,高对比度图像的直方图宽且分布基本均匀。所以我们要获得灰度级丰富且动态范围大的图像就需要寻找一种变换函数,该变换函数产生有均匀直方图的输出图像。

3.4.2 直方图均衡化的原理

在这里插入图片描述
在这里插入图片描述
如上图所示,一幅图像的灰度级(0-255)可被视为在区间[0,1]的随机变量,使用 Pr( r ) 和 Ps( s ) 来代表随机变量r和s的概率密度函数。
观察,[r1,r1+△r]这个范围△r是小的,并且这个区间上的概率密度函数 Pr( r ) 也不是均匀分布的。但是通过 s=T( r ) 的某种变换T之后,[r1,r1+△r]被映射到了[s1,s1+△s],并且△s是要大于△r的,也就是说,原来比较集中的灰度被拓宽成了较大的范围。而且,原来在区间[r1,r1+△r]上不均匀的分布 Pr( r ) 也变成了在更大区间[s1,s1+△s]上均匀分布的 Ps( s )。这样,通过T变换,就可以得到分布宽且均匀的直方图(高对比度)。
阴影部分的面积是相同的。

3.4.3 公式的推导

在这里插入图片描述
在这里插入图片描述

3.4.4 离散值的直方图均衡化

对于离散值,需要处理其概率和而不是概率密度函数和积分。

pk(rk)=nk/n

给出,这里k=0,1,…,L-1.
在这里插入图片描述
需要注意的是:
⑴上式中的rk和sk都是归一化后的值。
(2)实际的应用中,输入和输出的数字图像的灰度级辨率应该是—致的。例如,如果对一幅256个灰度级的数字图像进行直方图均衡,结果图像应该也是256灰度级的。

例子:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
与连续形式不同,一般不能证明离散变换能产生均匀概率密度函数的离散值(均匀直方图)。
计算简单性也是直方图均衡化的一个优点

图像处理系列笔记: https://blog.csdn.net/qq_33208851/article/details/95335809

2019-04-29 02:03:38 Wood_Du 阅读数 148

title: 空间域图像增强
date: 2019-04-10 21:02:26
tags: [数字图像处理,图像增强,Digital Image]


空间域图像增强

空间域图像增强

基本概念(引用):

参考:https://www.mathworks.com/help/images/ref/imguidedfilter.html

https://blog.csdn.net/wp1603710463/article/details/50408152

https://www.zhihu.com/question/27780598

我一直怀疑我参考的是我某位学长,这跟我们学校图像方面的本科教学意料之中的一致。

​ 图像增强可分成两大类:频率域法和空间域法。前者把图像看成一种二维信号,对其进行基于二维傅里叶变换的信号增强。采用低通滤波(即只让低频信号通过)法,可去掉图中的噪声;采用高通滤波法,则可增强边缘等高频信号,使模糊的图片变得清晰。后者空间域法中具有代表性的算法有局部求平均值法和中值滤波(取局部邻域中的中间像素值)法等,它们可用于去除或减弱噪声。

​ 图像增强的方法是通过一定手段对原图像附加一些信息或变换数据,有选择地突出图像中感兴趣的特征或者抑制(掩盖)图像中某些不需要的特征,使图像与视觉响应特性相匹配。在图像增强过程中,不分析图像降质的原因,处理后的图像不一定逼近原始图像。图像增强技术根据增强处理过程所在的空间不同,可分为基于空域的算法和基于频域的算法两大类。基于空域的算法处理时直接对图像灰度级做运算,基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法。

​ 基于空域的算法分为点运算算法和邻域去噪算法。点运算算法即灰度级校正、灰度变换和直方图修正等,目的或使图像成像均匀,或扩大图像动态范围,扩展对比度。邻域增强算法分为图像平滑和锐化两种。平滑一般用于消除图像噪声,但是也容易引起边缘的模糊。常用算法有均值滤波、中值滤波。锐化的目的在于突出物体的边缘轮廓,便于目标识别。常用算法有梯度法、算子、高通滤波、掩模匹配法、统计差值法等。

概念理解:图像增强?怎么才算增强了呢?
从应用角度看,怎么处理以下情况:
(1)图像太暗;
(2)图像太亮;
(3)有噪声点;
(4)对比度不明显。

空间域图像增强的方法:
1)针对每一个个像素处理
① 简单变换(取反,线性变换,指数变换,对数变换,幂次变换);
② 使用滤波器(算子)。
2)针对一组像素处理(直方图)
① 直方图均衡;
② 直方图匹配。
2.常用函数:
⑴ 取反(底片效果):imcomplement()
⑵ 二值化:~im2bw
⑶ 线性变换
⑷ 指数变换: exp()
⑸ 对数变换: log()

⑹ 幂次变换: power()
⑺ 查看直方图: imhist()
⑻ 使用直方图均衡:Histeq()
⑼ 使用平滑滤波器:(imfilter实现函数滤波)
⑽ 使用锐化滤波器
⑾ 旋转、缩放、剪切等: imrotate imresize imcrop

⑿ 对比度增强:imadjust()

实验:

  1. 用Matlab写一段程序,针对提供的图片IMG_2546.JPG,实现:

① (1)查看直方图

② (2)取反,再查看直方图

③ (3)使用直方图均衡,再查看直方图

④ (4) 通过旋转、切割,仅保留“爱丁堡花园”部分

  1. 针对图像100_3228.JPG,使用图像增强的方法使图像的效果好一点,并对比增强前后的直方图变化。

3.人脸1.jpg、2.jpg、3.jpg、4.jpg进行滤波等操作实现类似美图秀秀磨皮功能,并对比磨皮前后直方图变化。

1、图片IMG_2546.JPG

(1)查看直方图

Code:

clc
clear all
close all
subplot(3,2,1);
%查看直方图
init_Img=imread('E:\University\Digital image\IMG_2546.JPG');
%imshit()直方图的显示
%imhist需要输入一个二维的输入参数,如果输入的图像是一个彩色图像的话,
%不能直接用imhist命令,需要先将图像转成灰度图。
i=rgb2gray(init_Img);
imhist(i);
title('org hist');

直方图:

在这里插入图片描述

(2)取反,再查看直方图

Code:

%取反,查看
subplot(3,2,2);
contray_i = imcomplement(i);
imhist(contray_i);
title('contray hist');

结果:

在这里插入图片描述

(3)使用直方图均衡,再查看直方图

Code

%使用直方图均衡,再查看直方图
subplot(3,2,3);
banlance_i = histeq(i);
imhist(banlance_i);
title('均衡后');

结果:

在这里插入图片描述

(4)通过旋转,切割,仅保留“爱丁堡花园”部分

Code

%通过旋转,切割,仅保留“爱丁堡花园”部分
figure(2);
subplot(1,1,1);
%axis( [xmin xmax ymin ymax] )    设置当前坐标轴 x轴 和 y轴的限制范围
axis([50,250,50,200]);
imshow(init_Img);
grid on;    %显示网格线
axis on;    %显示坐标系
title('原图');
%旋转
figure(3);
subplot(1,1,1);
angle_i=imrotate(init_Img,-10,'bilinear','crop');
axis([50,200,50,200]);
imshow(angle_i);
grid on;
axis on;
title('旋转后');
%600 550 900 620   裁剪
figure(4);
subplot(1,1,1);
crop_i = imcrop(angle_i,[600,550,abs(600-900),abs(550-620)]);
imshow(crop_i);
title('裁剪后');

结果:

原图

在这里插入图片描述

旋转后:

在这里插入图片描述

裁剪后

在这里插入图片描述

2、图片100_3228.JPG,使用图像增强的方法使图像效果好一点,并对比增强前后的直方图变化

原图

在这里插入图片描述

1、使用中值滤波器 medfilt2

Code:

clc
clear all
close all
figure(1);
subplot(1,1,1);
init_Img=imread('E:\University\Digital image\100_3228.JPG');
init1 = imread('E:\University\Digital image\1.jpg');
init2 = imread('E:\University\Digital image\2.jpg');
init3 = imread('E:\University\Digital image\3.jpg');
init4 = imread('E:\University\Digital image\4.jpg');

imshow(init_Img);

figure(2);
subplot(1,1,1);
init_rgb = rgb2gray(init_Img);
imhist(init_rgb);
title('init hist');

%用图像增强的方法使图像的效果好一点,并对比增强前后的直方图变化。

%直方图均衡化实现
figure(3);
subplot(1,1,1);
tmp1=init_Img;
R = tmp1(:,:,1);
G = tmp1(:,:,2);
B = tmp1(:,:,3);
%medfilt2 消除噪声, 中值滤波器, 椒盐噪声
r=medfilt2(R);    %medfilt2()中值滤波 
g=medfilt2(G);
b=medfilt2(B);
o=histeq(r);  %直方图均衡
p=histeq(g);
q=histeq(b);
%cat:用来联结数组
Photo1 = cat(3,o,p,q);
imshow(Photo1,[]);
title('均衡化后的图像');

在这里插入图片描述

2、使用高斯滤波器

Code:

%使用imfilter滤波
%https://blog.csdn.net/u010740725/article/details/51557202
figure(4);
subplot(1,1,1);
tmp2 = init_Img;
R1 = tmp2(:,:,1);
G1 = tmp2(:,:,2);
B1 = tmp2(:,:,3);
r1 = histeq(R1);
g1 = histeq(G1);
b1 = histeq(B1);
%fspecial() 生成滤波器(也叫算子)的函数
%fspecial(type,para)
%gaussian 高斯滤波器  
gaussianFilter = fspecial('gaussian',[7,7],5);  %滤波器size:7*7 标准差:5
%imfilter() 
%函数语法:g=imfilter(f,w,filtering_mode,boundary_options,size_optinos) 
%函数功能:对任意类型数组或多维图像进行滤波 
%参数介绍:f是输入图像,w为滤波模板,g为滤波结果;表1-1总结了其他参数的含义。
o1 = imfilter(r1,gaussianFilter, 'symmetric','conv');
p1 = imfilter(g1,gaussianFilter, 'symmetric','conv');
q1 = imfilter(b1,gaussianFilter, 'symmetric','conv');
Photo2 = cat(3,o1,p1,q1);
imshow(Photo2,[]);
title('均衡化后的图像');

在这里插入图片描述

比较结果:

%比较效果
figure(5);
subplot(1,3,1);
imshow(init_Img);
subplot(1,3,2);
imshow(Photo1);
subplot(1,3,3);
imshow(Photo2);
title('比较');

在这里插入图片描述

figure(5);
subplot(1,3,1);
imhist(init_rgb);
subplot(1,3,2);
rgb1 = rgb2gray(Photo1);
imhist(rgb1);
subplot(1,3,3);
rgb2 = rgb2gray(Photo2);
imhist(rgb2);
title('直方图比较');

在这里插入图片描述

3、实现类似美图秀秀磨皮功能,并对比磨皮前后直方图变化

clc
clear all
close all
init_Img=imread('E:\University\Digital image\100_3228.JPG');
init1 = imread('E:\University\Digital image\1.jpg');
init2 = imread('E:\University\Digital image\2.jpg');
init3 = imread('E:\University\Digital image\3.jpg');
init4 = imread('E:\University\Digital image\4.jpg');
figure(16);
LL = double(init4);
HH= double(imguidedfilter(uint8(LL))) -LL +135;
%HH= double(imgaussfilt(uint8(LL),2)) -LL +135;
GG = imfilter(HH,fspecial('gaussian',[3,3],100));
opacity = 50;
Dest = (LL*(100-opacity) + (LL+2*GG-256)*opacity)/100;
imshow([uint8(LL) uint8(Dest)]);
title('数学公式');

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

最后一张直方图对比:

在这里插入图片描述

代码:

clc
clear all
close all
subplot(3,2,1);
%查看直方图
init_Img=imread('E:\University\Digital image\IMG_2546.JPG');
%imshit()直方图的显示
%imhist需要输入一个二维的输入参数,如果输入的图像是一个彩色图像的话,
%不能直接用imhist命令,需要先将图像转成灰度图。
i=rgb2gray(init_Img);
imhist(i);
title('org hist');
%取反,查看
subplot(3,2,2);
contray_i = imcomplement(i);
imhist(contray_i);
title('contray hist');

%使用直方图均衡,再查看直方图
subplot(3,2,3);
banlance_i = histeq(i);
imhist(banlance_i);
title('均衡后');

%通过旋转,切割,仅保留“爱丁堡花园”部分
figure(2);
subplot(1,1,1);
%axis( [xmin xmax ymin ymax] )    设置当前坐标轴 x轴 和 y轴的限制范围
axis([50,250,50,200]);
imshow(init_Img);
grid on;    %显示网格线
axis on;    %显示坐标系
title('原图');
%旋转
figure(3);
subplot(1,1,1);
angle_i=imrotate(init_Img,-10,'bilinear','crop');
axis([50,200,50,200]);
imshow(angle_i);
grid on;
axis on;
title('旋转后');
%600 550 900 620   裁剪
figure(4);
subplot(1,1,1);
crop_i = imcrop(angle_i,[600,550,abs(600-900),abs(550-620)]);
imshow(crop_i);
title('裁剪后');
clc
clear all
close all
figure(1);
init_Img=imread('E:\University\Digital image\100_3228.JPG');
init1 = imread('E:\University\Digital image\1.jpg');
init2 = imread('E:\University\Digital image\2.jpg');
init3 = imread('E:\University\Digital image\3.jpg');
init4 = imread('E:\University\Digital image\4.jpg');
%人脸1.jpg、2.jpg、3.jpg、4.jpg进行滤波等操作实现类似美图秀秀磨皮功能,并对比磨皮前后直方图变化
%可使用平滑滤波器
%常数128,其实也不一定是个定值,如果把他调大,则处理后的图像整体偏亮,调小则图像偏暗。
% 第五步的图层的不透明度参数也是一个道理,如果不透明度值越大,则图片整体的斑点可能会偏多,
%偏小,那么图像又会过于模糊,也许取个50%是个不错的选择吧,
%或者自己根据处理的纹理图的某个指标做个算法更好吧。
imshow(init_Img);

figure(2);
subplot(1,1,1);
init_rgb = rgb2gray(init_Img);
imhist(init_rgb);
title('init hist');

%用图像增强的方法使图像的效果好一点,并对比增强前后的直方图变化。

%直方图均衡化实现
figure(3);
subplot(1,1,1);
tmp1=init_Img;
R = tmp1(:,:,1);
G = tmp1(:,:,2);
B = tmp1(:,:,3);
%https://blog.csdn.net/cy_543/article/details/41548399
%http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=537123
%medfilt2 消除噪声, 中值滤波器, 椒盐噪声
r=medfilt2(R);    %medfilt2()中值滤波 
g=medfilt2(G);
b=medfilt2(B);
o=histeq(r);  %直方图均衡
p=histeq(g);
q=histeq(b);
%cat:用来联结数组
Photo1 = cat(3,o,p,q);
imshow(Photo1,[]);
title('均衡化后的图像');


%使用imfilter滤波
%https://blog.csdn.net/u010740725/article/details/51557202
figure(4);
subplot(1,1,1);
tmp2 = init_Img;
R1 = tmp2(:,:,1);
G1 = tmp2(:,:,2);
B1 = tmp2(:,:,3);
r1 = histeq(R1);
g1 = histeq(G1);
b1 = histeq(B1);
%fspecial() 生成滤波器(也叫算子)的函数
%fspecial(type,para)
%gaussian 高斯滤波器  
%https://blog.csdn.net/chaolei3/article/details/79400658
gaussianFilter = fspecial('gaussian',[7,7],5);  %滤波器size:7*7 标准差:5
%imfilter() 
%函数语法:g=imfilter(f,w,filtering_mode,boundary_options,size_optinos) 
%函数功能:对任意类型数组或多维图像进行滤波 
%参数介绍:f是输入图像,w为滤波模板,g为滤波结果;表1-1总结了其他参数的含义。
o1 = imfilter(r1,gaussianFilter, 'symmetric','conv');
p1 = imfilter(g1,gaussianFilter, 'symmetric','conv');
q1 = imfilter(b1,gaussianFilter, 'symmetric','conv');
Photo2 = cat(3,o1,p1,q1);
imshow(Photo2,[]);
title('均衡化后的图像');

%比较效果
figure(5);
subplot(1,3,1);
imshow(init_Img);
subplot(1,3,2);
imshow(Photo1);
subplot(1,3,3);
imshow(Photo2);
title('比较');

figure(5);
subplot(1,3,1);
imhist(init_rgb);
subplot(1,3,2);
rgb1 = rgb2gray(Photo1);
imhist(rgb1);
subplot(1,3,3);
rgb2 = rgb2gray(Photo2);
imhist(rgb2);
title('直方图比较');




figure(16);
LL = double(init4);
HH= double(imguidedfilter(uint8(LL))) -LL +135;
%HH= double(imgaussfilt(uint8(LL),2)) -LL +135;
GG = imfilter(HH,fspecial('gaussian',[3,3],100));
opacity = 50;
Dest = (LL*(100-opacity) + (LL+2*GG-256)*opacity)/100;
imshow([uint8(LL) uint8(Dest)]);
title('数学公式');

figure(17);
subplot(1,2,1);
initrgb = rgb2gray(uint8(LL));
imhist(initrgb);
title('原图');
subplot(1,2,2);
tranrgb = rgb2gray(uint8(Dest));
imhist(tranrgb);
title('处理后');

%利用均值滤波对图像进行平滑处理
%M = rgb2gray(init2);
M = init4;
MR = M(:,:,1);
MG = M(:,:,2);
MB = M(:,:,3);
%添加高斯噪声 均值为0 方差w为0.02
mr = imnoise(MR,'gaussian',0,0.01);
mg = imnoise(MG,'gaussian',0,0.01);
mb = imnoise(MB,'gaussian',0,0.01);
%mr = histeq(mr);
%mg = histeq(mg);
%mb = histeq(mb);
re_Img1 = cat(3,mr,mg,mb);
% ctrl R T 注释操作

M= rgb2gray(init4);
J=imnoise(M,'gaussian',0,0.02);
J = double(J);
 H1 = ones(3)/9;
 H2 = ones(7)/49;
G1 = conv2(J,H1,'same');
G2 = conv2(J,H2,'same');

%J= rgb2gray(init4);
%均值滤波
%C=conv2(A,B,shape);        %卷积滤波
%:输入图像,B:卷积核
%https://blog.csdn.net/jinv5/article/details/52874880
%只能处理灰度图像

% MR = double(MR);
% MG = double(MG);
% MB = double(MB);
% H1 = ones(3)/9;
% H2 = ones(7)/49;
% G1r = conv2(MR,H1,'same');
% G1g = conv2(MG,H1,'same');
% G1b = conv2(MB,H1,'same');
% G1 = cat(3,G1r,G1g,G1b);

% G2r = conv2(MR,H1,'same');
% G2g = conv2(MG,H1,'same');
% G2b = conv2(MB,H1,'same');
% G2 = cat(3,G2r,G2g,G2b);
figure(6);
subplot(2,2,1);
imshow(M);
title('原图像');

subplot(2,2,2);
imshow(re_Img1,[]);
title('高斯噪声');

subplot(2,2,3);
imshow(G1,[]);
title('3*3均值滤波图像');

subplot(2,2,4);
imshow(G2,[]);
title('7*7均值滤波图像');

% figure(7);
% imshow(re_Img1,[]);
% 
% figure(8);
% imshow(G1,[]);
% 
% figure(9);
% imshow(G2,[]);


%直方图均衡化实现
tmpn=init4;
Rn = tmpn(:,:,1);
Gn = tmpn(:,:,2);
Bn = tmpn(:,:,3);
%https://blog.csdn.net/cy_543/article/details/41548399
%http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=537123
rn=medfilt2(Rn);    %medfilt2()中值滤波
gn=medfilt2(Gn);
bn=medfilt2(Bn);
 %on=histeq(rn);  %直方图均衡
 %pn=histeq(gn);
 %qn=histeq(bn);
%cat:用来联结数组
Photon = cat(3,rn,gn,bn);
%Photon = cat(3,on,pn,qn);

tmp22 = init4;
R12 = tmp22(:,:,1);
G12 = tmp22(:,:,2);
B12 = tmp22(:,:,3);
r12 = R12;
g12 = G12;
b12 = B12;
%r12 = histeq(R12);
%g12 = histeq(G12);
%b12 = histeq(B12);
%fspecial() 生成滤波器(也叫算子)的函数
%fspecial(type,para)
%gaussian 高斯滤波器  
%https://blog.csdn.net/chaolei3/article/details/79400658
gaussianFilter = fspecial('gaussian',[30,30],7);  %滤波器size:7*7 标准差:5
%imfilter() 
%函数语法:g=imfilter(f,w,filtering_mode,boundary_options,size_optinos) 
%函数功能:对任意类型数组或多维图像进行滤波 
%参数介绍:f是输入图像,w为滤波模板,g为滤波结果;表1-1总结了其他参数的含义。
o12 = imfilter(r12,gaussianFilter, 'symmetric','conv');
p12 = imfilter(g12,gaussianFilter, 'symmetric','conv');
q12 = imfilter(b12,gaussianFilter, 'symmetric','conv');
Photon2 = cat(3,o12,p12,q12);

figure(10);
subplot(2,2,1);
imshow(init4);
title('原图');

subplot(2,2,2);
imshow(re_Img1);
title('高斯去噪');

subplot(2,2,3);
imshow(Photon,[]);
title('中值滤波');

subplot(2,2,4);
imshow(Photon2,[]);
title('高斯滤波');

figure(15);
%imguide
imguide = init4;
imguided = imguidedfilter(imguide);
imshow(imguided);
title('imguidedfilter');

Matlab图像处理函数汇总:
1、图像的变换
① fft2:fft2函数用于数字图像的二维傅立叶变换,如:i=imread('104_8.tif');
j=fft2(i);
②ifft2::ifft2函数用于数字图像的二维傅立叶反变换,如:
 i=imread('104_8.tif');
 j=fft2(i);
k=ifft2(j);
2、模拟噪声生成函数和预定义滤波器
① imnoise:用于对图像生成模拟噪声,如:
 i=imread('104_8.tif');
 j=imnoise(i,'gaussian',0,0.02);%模拟高斯噪声
② fspecial:用于产生预定义滤波器,如:
h=fspecial('sobel');%sobel水平边缘增强滤波器
h=fspecial('gaussian');%高斯低通滤波器
h=fspecial('laplacian');%拉普拉斯滤波器
h=fspecial('log');%高斯拉普拉斯(LoG)滤波器
h=fspecial('average');%均值滤波器
2、图像的增强
①直方图:imhist函数用于数字图像的直方图显示,如:
i=imread('104_8.tif');
imhist(i);
②直方图均化:histeq函数用于数字图像的直方图均化,如:
i=imread('104_8.tif');
j=histeq(i);
③对比度调整:imadjust函数用于数字图像的对比度调整,如:i=imread('104_8.tif');
j=imadjust(i,[0.3,0.7],[]);
④对数变换:log函数用于数字图像的对数变换,如:
i=imread('104_8.tif');
j=double(i);
k=log(j);
⑤基于卷积的图像滤波函数:filter2函数用于图像滤波,如:i=imread('104_8.tif');
h=[1,2,1;0,0,0;-1,-2,-1];
j=filter2(h,i);
⑥线性滤波:利用二维卷积conv2滤波, 如:
i=imread('104_8.tif');
h=[1,1,1;1,1,1;1,1,1];
h=h/9;
j=conv2(i,h);
⑦中值滤波:medfilt2函数用于图像的中值滤波,如:
i=imread('104_8.tif');
j=medfilt2(i);
⑧锐化
(1)利用Sobel算子锐化图像, 如:
i=imread('104_8.tif');
h=[1,2,1;0,0,0;-1,-2,-1];%Sobel算子
j=filter2(h,i);
(2)利用拉氏算子锐化图像, 如:
i=imread('104_8.tif');
j=double(i);
h=[0,1,0;1,-4,1;0,1,0];%拉氏算子
k=conv2(j,h,'same');
m=j-k;
3、图像边缘检测
①sobel算子 如:
i=imread('104_8.tif');
j = edge(i,'sobel',thresh)

②prewitt算子 如:
i=imread('104_8.tif');
j = edge(i,'prewitt',thresh)
③roberts算子  如:
i=imread('104_8.tif');
j = edge(i,'roberts',thresh)
④log算子  如:
i=imread('104_8.tif');
j = edge(i,'log',thresh)
⑤canny算子 如:
i=imread('104_8.tif');
j = edge(i,'canny',thresh)
⑥Zero-Cross算子 如:
i=imread('104_8.tif');
j = edge(i,'zerocross',thresh)
4、形态学图像处理
①膨胀:是在二值化图像中“加长”或“变粗”的操作,函数imdilate执行膨胀运算,如:
a=imread('104_7.tif'); %输入二值图像
b=[0 1 0;1 1 1;0 1 0]; 
c=imdilate(a,b);
②腐蚀:函数imerode执行腐蚀,如:
a=imread('104_7.tif'); %输入二值图像
b=strel('disk',1);
c=imerode(a,b);
③开运算:先腐蚀后膨胀称为开运算,用imopen来实现,如:
 a=imread('104_8.tif');
b=strel('square',2);
c=imopen(a,b);
④闭运算:先膨胀后腐蚀称为闭运算,用imclose来实现,如:
 a=imread('104_8.tif');
b=strel('square',2);
c=imclose(a,b);

4.12

2019-06-29 21:47:37 weixin_43760067 阅读数 221

3.1空间域处理方法概述
一、 变换域处理方法(包括正变换和反变换):对图像像元数据的空间表示f(x,y),先进行某种变换,然后针对变换数据进行处理。
空间域处理方法:根据图像像元数据的空间表示f(x,y),进行处理。
二、空间域处理方法:数值运算、集合运算、逻辑运算(布尔运算)、数学形态学操作

3.2数值运算
一、数值运算:单波段操作:(1)点运算
(2)邻域运算
多波段操作:(1)代数运算
(2)剖面运算
二、单波段点运算
1、线性点运算:一般用于图像的整体增强
2、分段线性点运算:一般用于图像局部灰度增强
3、非线性点运算:变换函数:(1)指数变换:压缩暗的部分,增强亮的部分
(2)对数变换:增强暗的部分,压缩亮的部分
非线性点运算一般用于图像局部灰度增强:高斯拉伸:高斯函数的形状
平方根拉伸:类似对数方式拉伸,暗的地方被拉伸,亮的地方被压缩
3.3集合运算
一、集合运算:空间操作:(1)图像裁剪:规则裁剪、不规则裁剪
(2)图像镶嵌
波段操作:(1)波段提取
(2)波段叠加
二、图像裁剪:(1)扩大研究区域裁剪
(2)计算坡度后裁剪
三、图像镶嵌:(1)对于图像镶嵌来说,待镶嵌的图像在重叠区应该具有相似的色调,纹理等特征。
(2)对于图像镶嵌来说,拼接线尽量选择在差异明显的自然地物交界处。
(3)对于图像镶嵌来说,如果拼接线两边的色调差异较大,则需考虑对拼接线两边附近的图像作匀色处理。
四、图像镶嵌的步骤:(1)选择图像,设计镶嵌方案
(2)图像的几何配准
(3)相邻图像颜色匹配
(4)图像镶嵌:需考虑重叠区的图像选择问题,为此需要先在重叠区内绘制一条连接两边图像的拼接线,使得根据这条 拼接线拼接起来的新图像浑然一体,不露拼接的痕迹。
五、波段操作:波段提取、波段叠加

3.4逻辑运算
一、逻辑运算(布尔运算):求反运算
与运算
或运算
异或运算:当两幅输入图像对应像元的值不同时,输出图像像元的值才为1

3.5数学形态学运算
一、数学形态学操作:两个基本过程:腐蚀、膨胀
(1)二值形态学
(2)灰度形态学
二、数学形态应用:图像去噪声、图像增强、图像分割
1.开运算:使用同一结构对图像先腐蚀再膨胀的运算
2.闭运算:使用同一结构对图像先膨胀再腐蚀的运算
三、灰度形态学:1、腐蚀:相减——>最小
2、膨胀:相加——>最大
开闭和闭开:去掉峰值和噪声点

没有更多推荐了,返回首页