%读入图像并将其转化成灰度图像
I=imread('tiantan.jpg');
% tiantan.jpg 为照片的名称,可自行更改。
imshow(I);title('原始图像');
figure
%上面两行代码是显示原始图像,即彩色图像。
I=rgb2gray(I);
%{
rgb2gray是matlab内部一种处理图像的函数,通过消除图像色调和饱和度信息同时保留
亮度实现将RGB图像或彩色图转换为灰度图像,即灰度化处理的功能,
调用这个功能的格式是I = rgb2gray(RGB),意思是将真彩色图像RGB转换为灰度强度图像I 。
%}
%生成高斯滤波器的核
w=fspecial('gaussian',3,0.5);
%{
H = fspecial(‘gaussian’,hsize,sigma) ;
当type = ‘gaussian’时就是高斯滤波器了,hsize指定滤波器的大小,默认值是3×3,
sigma指定滤波器的标准差,默认值是0.5。要深刻理解的是,sigma决定了高斯模糊核的模糊程度。
从数学上来讲, 高斯半径(sigma)对曲线形状的影响,sigma越小,曲线越高越尖,sigma越大,曲线越低越平缓。
因此高斯半径越小,则模糊越小,高斯半径越大,则模糊程度越大。换句话说,sigma越小,数值分布就越集中,
sigma越大,数值分布就越分散。所以当我们使用sigma的值很大的时候,然后运用此模糊核对图像处理,会使图像更加模糊。
参考网址:https://blog.csdn.net/sylviasoul/article/details/88321017
%}
size_a=size(I);
% size_a= 478 612
%进行高斯滤波
g=imfilter(I,w,'conv','symmetric','same');
%{
g = imfilter(f, w, filtering_mode, boundary_options, size_options)
其中,f为输入图像,w为滤波掩模,g为滤波后图像。filtering_mode用于指定在滤波过程中是使用“相关”还是“卷积”。
boundary_options用于处理边界充零问题,边界的大小由滤波器的大小确定。具体参数选项见下表:
选项
描述
filtering_mode
‘corr’ 通过使用相关来完成,该值为默认。
‘conv’ 通过使用卷积来完成
boundary_options
‘X’ 输入图像的边界通过用值X(无引号)来填充扩展其默认值为0
‘replicate’图像大小通过复制外边界的值来扩展
‘symmetric’图像大小通过镜像反射其边界来扩展
‘circular’图像大小通过将图像看成是一个二维周期函数的一个周期来扩展
size_options
‘full’输出图像的大小与被扩展图像的大小相同
‘same’输出图像的大小与输入图像的大小相同。这可通过将滤波掩模的中心点的偏移限制到原图像中包含的点来实现,
该值为默认值。
参考网址:https://blog.csdn.net/caomin1hao/article/details/78300302
%}
%降采样
t=g(1:2:size_a(1),1:2:size_a(2));
%{
size_a(1)=478 size_a(2)=612 灰度图像的行和列
上述语句实现的是功能是对二维图像进行降采样。该程序没有用for循环,而是将循环运算转化成等价的向量或矩阵运算,
即循环向量化,提高了图像处理的速度。
例:
输入:
a={1 2 3 ;4 5 6; 7 8 9}
输出:
a =
[1] [2] [3]
[4] [5] [6]
[7] [8] [9]
输入:
b=size(a)
输出:
b =
3 3
输入:
c=a(1:2:b(1),1:2:b(2))
输出:
c =
[1] [3]
[7] [9]
%}
imshow(I);title('灰度图像');
figure
imshow(t);title('一次金字塔后的图像');
输出彩色图像
%读入图像并将其转换成灰度图像
I=imread('tiantan.jpg');
%I=rgb2gray(I);
% 生成高斯滤波器的核
w=fspecial('gaussian',3,0.5);
size_a=size(I);
% 进行高斯滤波
g=imfilter(I,w,'conv','symmetric','same');
% 降采样
t=I(1:2:size_a(1),1:2:size_a(2),1:3);
size_t=size(t);
t2=t(1:2:size_t(1),1:2:size_t(2),1:3)
% 显示处理结果
imshow(I);
figure
imshow(t)
figure
imshow(t2)