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('闭运算');

随便一张图的运行结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值