Skip to content

MulimgViewer is a multi-image viewer that can open multiple images in one interface, which is convenient for image comparison and image stitching.

License

Notifications You must be signed in to change notification settings

OhHandsome/MulimgViewer

Repository files navigation

multiple images viewer

GitHub stars All releases

MulimgViewer

English page (Thanks @Faberman for the translation and polishing.)

1. 介绍

MulimgViewer多图像浏览器,在一个界面显示多个图像,方便图像的比较、筛选。

功能

  • 多路径并行显示
  • 多框并行放大
  • 点按旋转
  • 支持远程目录
  • 批量化resize图片

image

下载地址:https://github.com/nachifur/MulimgViewer/releases

测试图像地址:https://github.com/nachifur/MulimgViewer/blob/master/img/test_img.zip

您的star是我开发完善该项目最大的支持! qq交流群:945669929

2. python源码运行

v3.9.1以后仅提供Windows 10的包(amd64)。其他环境可以使用源码运行。建议使用Python3.6以上。

pip安装:

pip install wxpython pillow pytest-shutil

运行:

python3 MulimgViewer.py

3. Windows-10

直接运行exe文件。也可以下载源码运行MulimgViewer.py

v3.9.3以后,Windows 10提供安装版_Setup.exe和便携版_Portable.exe(安装版_Setup.exe启动速度更快)。

4. 应用场景

例1:多图像浏览

浏览202,599张图片的数据库CelebA,需要多长时间?一次显示1000张,只需点击200多次即可完成!详细见 image

例2:并行挑选

以前你可能需要在多个窗口打开多个图像,逐个对比,再到文件夹找到对应的图像,复制到别的地方。

现在使用MulimgViewer多图像浏览器,输入各个需要对比的目录,一键保存需要对比的多张图像到本地

image

图片并行挑选:Parallel auto or Parallel manual,关闭Parallel+Sequential(默认使用复制,选中Move file为剪切)。

例3:并行放大

MulimgViewer可以轻松的完成纵向与横向的拼接,支持自动拼接保存,支持并行放大

同时支持任意位置划框(鼠标左键按住移动),多框并行放大(鼠标右键点击,生成新的框)。详细见

image

例4:成对数据浏览

MulimgViewer可以方便的进行成对的数据的浏览、比较。详细见

image

例5:支持远程挂载目录图片浏览

将远程服务器的目录挂载后,在MulimgViewer中选择目录即可,完成图片浏览。

  1. Ubuntu: 使用ubuntu的文件管理器nautilus,stfp://10.8.0.4连接到服务器。

  1. win10: 安装WinFsp和SSHFS-Win之后,文件资源管理器中填写远程服务器ip,例如:\\sshfs\user@ip!port

例6:支持点按旋转

显示多张图片的同时,鼠标左键点击即可完成图片旋转。

image

例7:批量化resize图片

利用自动保存功能,可以实现批量化resize图片。 操作:

  1. 输入模式选择:Sequential,选择输入文件夹
  2. 选择保存文件的输出目录
  3. 勾选自动保存Auto save all
  4. 设置Truth resolution为固定的大小,例如:256,256
  5. 点击保存💾️

5. 使用说明

5.1 快捷栏

image

5.2 操作流程

  1. Setting中填写布局参数:row(一行有几张图片), num per img(一个图片由几个子图片组成), col(一列有几个图片)

  2. File->Open,选择输入模式

    2.1. Sequential: 一个文件夹多张图片。

    2.2. Parallel auto: 一个文件夹多个子文件夹。一个文件夹下有n个子文件夹,子文件夹中为图片。

    2.3. Parallel manual: 手动选择多个子文件夹。

    2.4. Image file list: 从文件导入图片列表文件

  3. 这时图片显示在面板,可以使用next、last查看下一张,上一张图片

  4. File->Select output path, 选择输出的路径

  5. Setting->Output mode, 选择输出模式

  6. 点击保存💾️

5.3 快捷键

  1. 输入路径:

    Sequential: Ctrl+E

    Parallel auto: Ctrl+A

    Parallel manual: Ctrl+M

    Image file list: Ctrl+F

  2. 输出路径:Ctrl+O

  3. 下一张:Ctrl+N

  4. 上一张Ctrl+L

  5. 保存:Ctrl+S

  6. 刷新:Ctrl+R

  7. 使用键盘的上下左右,可以移动图像面板里的图像。

5.4 功能介绍

5.4.1 输入模式

Sequential串行浏览模式,一个文件夹下有不同的图片,命名不同,用于图片的拼接。

Parallel autoParallel manual并行浏览模式(子文件夹的名称不一样),需要确保各子文件夹下面的图片命名相同,用于不同图片的对比。

Image File List自定义模式,从txt, csv文件导入图片列表。支持csv文件多行多列显示。

如果需要自动排布,Num per img设为-1。

5.4.2 输出模式:

Stitch: 将拼接的图像保存到stitch_images目录下

Select: 分别保存当前浏览的图像到不同的文件夹,默认为copy模式,选中Move file为剪切模式。(推荐的输入模式为Parallel autoParallel manual,关闭Parallel+Sequential

Magnifer: 单独保存放大图像,方便用户的后期处理。

5.4.3 图像排列自动化

默认:Num per img = -1,这时为程序自动布局模式Num per img 的意思是几张图像合成一个图像。

5.4.4 取消图像排列自动化

num per img = 1或者>1,图像布局为手动模式,这时可以调整 rowcol

5.4.5. 并行模式下的串行显示

Parallel autoParallel manual模式下,可以并行显示多个文件夹。选中Parallel+Sequential,在并行显示的同时,可以串行浏览每个文件夹中的前n张图片,n可由Num per img设定。

例如:row=5 ,Num per img=4, col=1, 一次分别读取5个并行目录的4张图片,共20张。Vertical可以调整串行方向。

修改rowcol, 可以控制并行文件夹的二维排布。

image

5.4.6 自动保存

勾选自动保存Auto save all,点击保存💾️,实现批量化操作。

5.4.7 图像尺寸归一化

Fill: 图像尺寸为一组图像中的最大尺寸,填充模式(保持原始像素分辨率)

Crop: 图像尺寸为一组图像中的最小尺寸,裁剪模式(保持原始像素分辨率)

Resize: 图像尺寸为一组图像中的平均尺寸,缩放模式(不保持原始像素分辨率)

5.4.8 图像间隔

image

5.4.9 图像填充

支持多种颜色填充。支持背景填充透明同时支持前景透明度调节

5.4.10 并行手动模式支持路径导入保存

5.4.11 显示、输出尺寸独立

此功能可以保证显示的scale与输出独立。

应用场景

  1. 同时浏览显示100张图像,屏幕放不下,使用Show scale缩放即可
  2. 100张拼接造成的保存图片很大,使用Output scale可以方便控制文件大小

5.4.12 并行放大

操作:

  1. 点击放大按钮

  1. 鼠标变为十字光标,在任意图片位置划框
  2. 选择放大区域:按住鼠标左键,移动鼠标,释放鼠标左键,显示放大结果
  3. 新增放大框:鼠标右键,实现多框放大

Tip:

  1. 开启🔍️Keep size,即可获得与原始图片长宽比一样的放大结果。
  2. 🔍️Scale,默认为-1,1,自动设置scale。
  3. 可以选中Vertical,Crtl+R刷新显示,放大图像放置在原图的左侧。
  4. 🔍️Scale,支持自定义倍数放大,最大不超过原图尺寸。例如:3,3,长宽3倍的放大。
  5. Draw line width设为0,即可隐藏框。
  6. Draw line width单位为pixel,在所有缩放下线宽保持不变。如果在Show scale0.1,0.1Output scale1,1时,显示的框的宽度合适,那么输出框的宽度可能相比图片尺寸偏小。

微调box:

(注意:开启Select box后,使用鼠标左键不能划框)

  1. 选中Select box
  2. 鼠标左键单击,选中已有的放大框
  3. 然后使用键盘上下左右,微调放大框
  4. 关闭Select box

清除放大框

方法1:

  1. 选中Select box,键盘Del,删除特定box
  2. 关闭Select box,键盘Del,删除所有box

方法2:

  1. 关闭Select box
  2. 鼠标左键双击图片
  3. Ctrl+R刷新显示。

5.4.13 窗口大小自动化调节

开启Auto layout,即可实现窗口自动大小调节。

5.4.14 浏览图片,精确定位

粗定位: 移动slider。

精确定位:

1. `Help`->`Index table` 2. 查看图片显示序号 3. 输入序号,回车

6. 注意事项以及使用技巧

6.1 并行模式

  1. 使用多图浏览模式(Parallel manual和Parallel auto),对比的文件夹里面的图像命名需要一样!
  2. 子文件夹的命名。如果是0,1,2...10,11,需要改为00,01,02,...10,11。因为排序时会变为:0,1,10,11,2...

文件重命名工具推荐:

win10: uTools

Ubuntu:

  1. purrr. sudo apt install purrr
  2. Thunar - Bulk Rename Files. sudo apt install thunar

6.2 多图拼接,超大像素图片,窗口大小问题

  1. 关闭Auto layout,最大化窗口
  2. 调节Show scale0.2,0.2缩小,2,2放大
  3. 更改Truth resolution,将所有照片resize到同一尺寸,对于浏览及其友好

7. 未来增强功能

感谢各位提供意见!大家可以在issues中发表意见,采用的会致谢大家!如果大家希望可以和我一起合作开发,请联系我!

  • 增加精确定位(目前已经有slider)
  • 增加图片索引查看,方便进行精确定位
  • 并行的局部放大功能(用于论文中的对比实验图片急需!
  • 输入方式,新增:路径文件的导入和存储(@nothingeasy提供改进意见)
  • 增加删除功能(完善筛选功能)
  • 保存带框的原始图像(@JuZiSYJ提供改进意见)
  • 拼图过程中,点击可旋转图片
  • 多框放大功能(@JuZiSYJ提供改进意见)
  • 去除放大图像的box(@stefanklut提供改进意见)
  • 高清图像的对比,放大图像1:1输出(@Faberman提供改进意见)
  • 为图像添加titile(@Faberman提供改进意见)

8. 致谢

  • nothingeasy:改进意见-(输入方式,新增:路径文件的导入和存储)
  • JuZiSYJ:改进意见-(保存带框的原始图像+并行放大)
  • Faberman:改进意见-(为图像添加titile+放大图像1:1输出)
  • stefanklut:改进意见-(不显示放大图像的边界框)

9. 引用

如果您在研究中使用此项目,请使用以下BibTeX条目。

@misc{MulimgViewer2020,
  author =       {Liu, Jiawei},
  title =        {{MulimgViewer: A multi-image viewer for image comparison and image stitching}},
  howpublished = {\url{https://github.com/nachifur/MulimgViewer}},
  year =         {2020}
}

10. 使用条款

许可证

GPL-3.0 License:https://www.gnu.org/licenses/gpl-3.0.en.html

额外条款

About

MulimgViewer is a multi-image viewer that can open multiple images in one interface, which is convenient for image comparison and image stitching.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%