目的
超声的原始图像不仅包含了用于诊断的信息,还掺杂了诸如机器型号、日期等不相关的信息。为了确保后续神经网络分割的准确性和有效性,需要对这些无关信息进行裁剪,仅保留与分割任务直接相关的img和mask部分。这样既能优化数据处理流程,又能提升后续分析的精准度。
如下:
我的mask图像是[0,1],因此在得到新的mask图之后,需要再次进行[0, 1]->[0,255]的转化,可以根据个人需要适当调整流程。
思路
首先,读取img和mask图,使用matlab可视化img图;然后,根据需要使用矩形工具勾画出img需要保留的区域,并且保留矩形的四个点位;接着,matlab自动根据保留的点位对mask图进行裁剪;最后,将新勾画出的img图和mask图保存到新的文件夹中。
代码
文件路径
代码
% 设定原始文件夹和新文件夹路径
imgsFolder = 'imgs';
groundtruthFolder = '01gt';
newImgsFolder = 'new_images';
newGroundtruthFolder = 'new_gt01';
% 创建新文件夹
mkdir(newImgsFolder);
mkdir(newGroundtruthFolder);
% 获取图像文件列表
imgsFiles = dir(fullfile(imgsFolder, '*.png'));
groundtruthFiles = dir(fullfile(groundtruthFolder, '*.png'));
% 逐个处理图像 中途断了可以在这里手动设置起始点
for i = 1:numel(imgsFiles)
% 读取图像
img = imread(fullfile(imgsFolder, imgsFiles(i).name));
groundtruth = imread(fullfile(groundtruthFolder, groundtruthFiles(i).name));
% 显示图像并提供互动工具
fig = figure;
imshow(img);
title('Use the ROI tool to draw a region of interest');
h = drawrectangle; % 使用矩形工具勾画保留的区域
mask = createMask(h);
% 获取勾画区域的位置
position = round(h.Position);
x1 = position(1);
y1 = position(2);
x2 = x1 + position(3) - 1;
y2 = y1 + position(4) - 1;
% 将勾画区域裁剪并保存到新文件夹
imgNew = img(y1:y2, x1:x2, :);
groundtruthNew = groundtruth(y1:y2, x1:x2, :);
imwrite(imgNew, fullfile(newImgsFolder, imgsFiles(i).name));
imwrite(groundtruthNew, fullfile(newGroundtruthFolder, groundtruthFiles(i).name));
% 关闭当前图像
close(fig);
end