前言:因为matlab本身有很多数学公式库,图像处理有时候交给matlab会方便很多。另外,做科研就算不是专门写代码的也会了解些matlab,和做硬件的同门进行需求对接的时候往往也会要读matlab代码。所以觉得学习和自己相关matlab代码还是挺有必要的,于是决定写博客记录一下方便后续快速回顾使用。
Matlab图像处理常用代码
- 图像读取和存储
- 开闭运算
- 腐蚀膨胀
- 开闭运算
- 代码
图像读取和存储
读取file_path下所有的bmp图像,进行相关图像处理后存储到file_save_path中。
clc;clear all;close all;tic;%清理内存
file_path='Images\';% 批量图像所在的文件夹下
file_save_path='Saven Images\';% 要存储的地址
img_path_list=dir(strcat(file_path,'*.bmp'));% 获取批量bmp格式图像所在的路径
img_num=length(img_path_list);
for i=1:img_num
img=imread(strcat(file_path,img_path_list(i).name));% 读取
% TODO: 图像处理相关代码
imwrite(img,strcat(file_save_path,img_path_list(i).name),"bmp");% 存储
end
开闭运算
腐蚀膨胀
形态学中两种基本的操作是膨胀和腐蚀。
腐蚀:为其边界减少像素点。
膨胀:为其边界添加像素点。
两者是互逆的过程。
开闭运算
开运算:先腐蚀再膨胀。
作用:去除小噪声点。
闭运算:先膨胀再腐蚀。
作用:消除图像中的小孔洞和断裂。
代码
通常是对二值化图像进行腐蚀膨胀和开闭运算操作。
clc;
clear;
close all;
I=imread('1.jpg');% 读取图像
I=rgb2gray(I);% 转为灰度图像
%imshow(I);
J=im2bw(I);% 图像二值化
%J=bwmorph(J, 'dilate');
s=strel('disk',5);% 圆形半径尺寸小于5的前景都会被腐蚀掉
erode_img=imerode(J,s);%腐蚀处理
dilate_img=imdilate(J,s);%膨胀处理
s=strel('square',3);% 这里所有s还可以传入别的自定义的结构,例如这里的边长为3的正方形
open_img=imopen(J,s);%开运算处理
close_img=imclose(J,s);%闭运算处理
% 界面显示
figure;
subplot(1,4,1),imshow(erode_img),title('腐蚀');% subplot(1,4,1)表示1行4列显示,显示在编号1的位置
subplot(1,4,2),imshow(dilate_img),title('膨胀');
subplot(1,4,3),imshow(open_img),title('开运算');
subplot(1,4,4),imshow(close_img),title('闭运算');
随便一张图的运行结果: