前言
这篇博客主要记录前几天在上计算机图像处理时遇到的一些问题,以及一些收获!
基础语法
注释快捷键:Ctrl + R
取消注释快捷键:Ctrl + T
% 求 1 - 100的和
s = 0;
% 注意,这里1 - 100都取得到!
for i = 1:100
% 注意,s += i;是错误的,Matlab不支持!
s = s + i;
end
% 打印输出
disp(s);
% 定义函数求最大公约数
% 注:函数名与文件名要一致,这样才可调用
function result = Gcd(x,y)
if y > x
t = x;
x = y;
y = t;
end
% 注:x % y是不允许的,因为注释符是 % ,可以用 mod。同时,!= 也是不允许的,要用~=
while((mod(x,y) ~= 0))
r = mod(x,y);
x = y;
y = r;
end
result = y;
end
加噪声
常见的噪声有:
- gaussian:高斯噪声
- localvar:均值高斯白噪声
- poisson:泊松噪声
- alt & pepper: 盐椒噪声
- speckle:乘性噪声
% 读入图像
img = imread("test.bmp");
% figure 创建一个新的窗口,所有参数采用默认。imshow展示图像!
figure;imshow(img);
% 给指定图像加高斯噪声
img_noisy_1 = imnoise(img,"gaussian",0.02);
% 展示图像
figure;imshow(img_noisy);
图像加法降噪
img = imread("test.bmp");
figure;imshow(img);
img_noisy_1 = imnoise(img,"gaussian",0.02);
figure;imshow(img_noisy);
for i = 1 : 9
% 注意,图像加法会超出数据范围uint8 0 ~ 255;需要进行数据类型的转换!
img = imadd(uint16(img),uint16(img_noisy_1));
end
img = img / 10;
% 之后,还要转回uint8输出!
figure;imshow(uint8(img));
关于matlab的存储格式的数据类型
matlab使用三种存储格式来存储图像。
- uint8 (8 位无符号整数)、
- uint16 (16 位无符号整数)
- double (双精度)
大多数图像文件格式采用 8位数据存储像素值,将这些文件读入内存后,matlab 都将其存储为
uint8 类型。