前言
使用传统的标注软件,labelme与百度ai智能分割软件eiseg,
都无法打开遥感,sar图像的原图,会直接爆存储闪退,
故出此教程来进行数据集的制作。
一、photoshop
ps的强大众所周知
二、使用步骤
1.使用磁性套索工具进行描边
相关的设置:
可以更具自己的数据集进行参数修改
2.勾选待选择区域
3.进行mask填充
在mask上点击鼠标右键,选择填充(填充前自行设定好自己的 前景色与背景色)
4.结果
选择导出即可为png或者jpg即可
问题:
由于原始的图片过大,ps在导出的时候会自动缩放到36%左右(目前无解,有知道的大佬可以分享一下相关的处理心得)
使用脚本对大场景图片进行分割处理
处理脚本代码:
import os
from PIL import Image
Image.MAX_IMAGE_PIXELS=2300000000
def splitimage(src, rownum, colnum, dstpath):
img = Image.open(src)
w, h = img.size
if rownum <= h and colnum <= w:
print('Original image info: %sx%s, %s, %s' % (w, h, img.format, img.mode))
print('开始处理图片切割, 请稍候...')
s = os.path.split(src)
if dstpath == '':
dstpath = s[0]
fn = s[1].split('.')
basename = fn[0]
ext = fn[-1]
if ext=='jpg':
ext='jpeg'
num = 0
rowheight = h // rownum
colwidth = w // colnum
for r in range(rownum):
for c in range(colnum):
box = (c/2 * colwidth, r * rowheight, (c/2 + 1) * colwidth, (r + 1) * rowheight)
img.crop(box).save(os.path.join(dstpath, basename + '_' + str(num) + '.' + ext), ext)
num = num + 1
box = (c * colwidth, r * rowheight, (c + 1) * colwidth, (r + 1) * rowheight)
img.crop(box).save(os.path.join(dstpath, basename + '_' + str(num) + '.' + ext), ext)
num = num + 1
print('图片切割完毕,共生成 %s 张小图片。' % num)
else:
print('不合法的行列切割参数!')
src = input('请输入图片文件路径:')
if os.path.isfile(src):
dstpath = input('请输入图片输出目录(不输入路径则表示使用源图片所在目录):')
if (dstpath == '') or os.path.exists(dstpath):
row = int(input('请输入切割行数:'))
col = int(input('请输入切割列数:'))
if row > 0 and col > 0:
splitimage(src, row, col, dstpath)
else:
print('无效的行列切割参数!')
else:
print('图片输出目录 %s 不存在!' % dstpath)
else:
print('图片文件 %s 不存在!' % src)
使用方法:
请输入图片文件路径:e:/6.jpg
请输入图片输出目录(不输入路径则表示使用源图片所在目录):
请输入切割行数:20
请输入切割列数:20
Original image info: 9554x10289, JPEG, RGB
开始处理图片切割, 请稍候…
图片切割完毕,共生成 800 张小图片
总结
建议全部选完一类后,对这一类进行填充,再通过反选的方式对另一类填充,提高效率