python多幅图自适应紧致二维排放

有时可视化会要同时放多幅图,如分割的原图、label、pseudo-label 和 prediction。当图很多,简单地排成一行可能会太长,不便观看。考虑将图排成二维网格(grid)展示,且为方便看,考虑让网格尽可能「紧致」是不是「发散」。

可用网格的周长衡量其紧致程度。由于积定和最小,所有图的总面积一定,存在一种排法使得网格周长最短,从而最紧致。一般地,有 n 幅图要一齐展示,排成 H × W H\times W H×W 的二维网格,则编排的目的是使网格的(半)周长 H + W 尽量小。

有时为了令此周长最短,可能需要多一些冗余坑位。如 17 幅周长为 a 的正方形图,如果排成 1x17 或 17x1,则网格的半周长是 a + 17a = 18a;而若放在 2x9 网格内,虽然共 18 个格,冗余一格,但此时半周长为 2a + 9a = 11a < 18a;若是 3x6 则更短:3a + 6a = 9a;而 4x5 也是 4a + 5a = 9a,但会冗余两格。即越接近正方形越紧致。

Code

  • exact 参数指定是否限制网格恰有 n 个格
# import math, numpy as npdef compact_image_grid(image_list, exact=False):"""adaptively arrange images in a compactest 2D grid (for better visualisation)Input:image_list: list of images in format of [h, w] or [h, w, c] numpy.ndarrayexact: bool, subjest to #grids = #images or not.If False, #grids > #images may happen for a more compact view.Output:grid: [H, W] or [H, W, c], compiled images"""n = len(image_list)if 1 == n:return image_list[0]# max image resolutionmax_h, max_w = 0, 0for im in image_list:h, w = im.shape[:2]max_h = max(max_h, h)max_w = max(max_w, w)# find compactest layoutnr, nc = 1, nmin_peri = nr * max_h + nc * max_w # 1 rowfor r in range(n, 1, -1):if exact and n % r != 0:continuec = math.ceil(n / r)assert r * c >= n and r * (c - 1) <= nperi = r * max_h + c * max_wif peri < min_peri:nr, nc, min_peri = r, c, periassert nr * nc >= ngrid_shape = (nr * max_h, nc * max_w) + image_list[0].shape[2:]grid = np.zeros(grid_shape, dtype=image_list[0].dtype)for i, img in enumerate(image_list):r, c = i // nc, i % nch, w = img.shape[:2]grid[r*max_h: r*max_h+h, c*max_w: c*max_w+w] = imgreturn grid

Test

import os, math
import numpy as np
from PIL import Imagedef compact_image_grid(image_list, exact=False):"""见前文"""pass# 读 17 幅图
p = os.path.expanduser(r"~\Pictures\wallpaper")
img_list = []
for i, f in enumerate(os.listdir(p)):img = np.asarray(Image.open(os.path.join(p, f)).resize((224, 224)))if img.ndim < 3: continueimg_list.append(img[:, :, :3])if len(img_list) >= 17: break# exact=False,必须恰有 n 格
Image.fromarray(compact_image_grid(img_list, exact=False)).save("grid.png")
# exact=True,允许冗余格
Image.fromarray(compact_image_grid(img_list, exact=True)).save("grid-exact.png")

效果:

允许冗余:
在这里插入图片描述
准确格数:
grid-exact

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/380023.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word 设置多级混合标题自动更新

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 有没有体会过多级标题&#xff0c;怎么设置都不听使唤的情况&#xff1f; 我想要的格式是&#xff1a; 二、原因分析 多级标题中发现&#xff0c;输入编号格式这里有个数字没有底纹,是了&#xff0…

【第4章】Spring Cloud之Nacos单机模式支持mysql

文章目录 前言一、初始化1. 初始化数据库2. 修改配置文件 二、效果1. 重新启动2. 新增用户 总结 前言 在0.7版本之前&#xff0c;在单机模式时nacos使用嵌入式数据库实现数据的存储&#xff0c;不方便观察数据存储的基本情况。0.7版本增加了支持mysql数据源能力&#xff0c;具…

PhantomJs将html生成img|pdf

PhantomJS PhantomJS是一个可编程的无头浏览器&#xff0c;‌它基于WebKit内核&#xff0c;‌通过JavaScript API进行脚本化操作&#xff0c;它对各种web标准有快速和原生化的支持&#xff0c;包括DOM处理、CSS选择器、JSON、Canvas和SVG。‌无头浏览器指的是一个完整的浏览器内…

顶着关税也要出海,蔚来如何找到未来?

“买得杏花&#xff0c;十载归来方始坼。” 十年的时间&#xff0c;足以见证每一个市场与品牌的白云苍狗、沧海桑田。 而2024年&#xff0c;也是蔚来成立的第十年。这十年里&#xff0c;中国的新能源车的渗透率从0.32%提高到了31.6%&#xff0c;蔚来从一家初创车企成长为如今…

设计模式——模版方法和策略模式

前言 作为一名资深CV工程师&#xff0c;学会为自己减少工作量乃重中之重。但只是一味地CV&#xff0c;只会因为劣质代码而让自己的工作量加倍&#xff0c;为了将来不被繁重的维护工作而打扰自己的休息日&#xff0c;为了更好的节能&#xff0c;学习设计模式&#xff0c;刻不容缓…

Filebeat k8s 部署(Deployment)采集 PVC 日志发送至 Kafka——日志处理(二)

文章目录 前言Filebeat Configmap 配置Filebeat Deployment验证总结 前言 在上篇文章中总结了 Django 日志控制台输出、文件写入按天拆分文件&#xff0c;自定义 Filter 增加 trace_id 以及过滤——日志处理&#xff08;一)&#xff0c;将日志以 JSON 格式写入日志文件。我们的…

COD论文笔记 Deep Gradient Learning for Efficient Camouflaged 2022

动机 这篇论文的动机在于解决伪装目标检测(COD)中的一个关键问题&#xff1a;在复杂背景下&#xff0c;伪装目标与背景的边界模糊&#xff0c;使得检测变得极其困难。现有的方法&#xff0c;如基于边界或不确定性的模型&#xff0c;通常仅响应于伪装目标的稀疏边缘&#xff0c…

[米联客-安路飞龙DR1-FPSOC] FPGA基础篇连载-21 VTC视频时序控制器设计

软件版本&#xff1a;Anlogic -TD5.9.1-DR1_ES1.1 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用安路(Anlogic)FPGA 实验平台&#xff1a;米联客-MLK-L1-CZ06-DR1M90G开发板 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 ht…

ACM中国图灵大会专题 | 图灵奖得主Manuel Blum教授与仓颉团队交流 | 华为论坛:面向全场景应用编程语言精彩回顾

ACM 中国图灵大会&#xff08;ACM Turing Award Celebration Conference TURC 2024&#xff09;于2024年7月5日至7日在长沙举行。本届大会由ACM主办&#xff0c;in cooperation with CCF&#xff0c;互联网之父Vinton Cerf、中国计算机学会前理事长梅宏院士和廖湘科院士担任学术…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【26】【内网穿透】cpolar

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【27】【内网穿透】cpolar 内网穿透cpolar内网穿透联调配置练习—使用公网地址访问gulimall.com参考 内网穿透 正常的外网需要访问我们项目的流程是&#xff1a; 买服务器并且有公网固定…

系统架构设计师教程 第3章 信息系统基础知识-3.7 企业资源规划(ERP)-解读

系统架构设计师教程 第3章 信息系统基础知识-3.7 企业资源规划&#xff08;ERP&#xff09; 3.7.1 企业资源规划的概念3.7.2 企业资源规划的结构3.7.2.1 生产预测3.7.2.2 销售管理&#xff08;计划&#xff09;3.7.2.3 经营计划&#xff08;生产计划大纲&#xff09;3.7.2.4 …

小白新手搭建个人网盘

小白新手搭建个人网盘 序云服务器ECS重置密码远程连接ECS实例 安装OwnCloud安装Apache服务PHP运行环境NAS挂载挂载验证操作体验 序 阿里云文件存储NAS&#xff08;Apsara File Storage NAS&#xff09;是一个可大规模共享访问&#xff0c;弹性扩展的分布式文件系统。本文主要是…

好玩的调度技术-场景编辑器

好玩的调度技术-场景编辑器 文章目录 好玩的调度技术-场景编辑器前言一、演示一、代码总结好玩系列 前言 这两天写前端写上瘾了&#xff0c;顺手做了个好玩的东西&#xff0c;好玩系列也好久没更新&#xff0c;正好作为素材写一篇文章&#xff0c;我真的觉得蛮好玩的&#xff…

免费视频批量横转竖

简介 视频处理器 v1.3 是一款由是貔貅呀开发的视频编辑和处理工具&#xff0c;提供高效便捷的视频批量横转竖&#xff0c;主要功能&#xff1a; 导入与删除文件&#xff1a;轻松导入多个视频文件&#xff0c;删除不必要的文件。暂停与继续处理&#xff1a;随时暂停和继续处理。…

【JavaEE进阶】——Spring AOP

目录 &#x1f6a9;Spring AOP概述 &#x1f6a9;Spring AOP快速⼊⻔ &#x1f393;引入AOP依赖 &#x1f393;编写AOP程序 &#x1f6a9;Spring AOP 详解 &#x1f393;Spring AOP核⼼概念 &#x1f393;通知类型 &#x1f393;PointCut &#x1f393;切⾯优先级 Ord…

泰迪科技2024年高校(本科/职业院校)大数据实验室建设及大数据实训平台整体解决方案

高校大数据应用人才培养目标 大数据专业是面向信息技术行业&#xff0c;培养德智体美劳全面发展的大数据领域的高素质管理型专门人才&#xff0c;毕业生具备扎实的管理学、经济学、自然科学、技术应用、人文社科的基本理论, 系统深入的大数据管理专业知识和实践能力&#xff0c…

如何学习Spark:糙快猛的大数据之旅

作为一名大数据开发者,我深知学习Spark的重要性。今天,我想和大家分享一下我的Spark学习心得,希望能够帮助到正在学习或准备学习Spark的朋友们。 目录 Spark是什么?学习Spark的"糙快猛"之道1. 不要追求完美,在实践中学习2. 利用大模型作为24小时助教3. 根据自己的节…

宠物空气净化器哪款品牌好?口碑好的猫用空气净化器排名

猫咪每年掉毛两次&#xff0c;一次掉半年的现象真让人头疼。作为一位5年资深铲屎官&#xff0c;特别是在掉毛季节&#xff0c;猫毛无处不在&#xff0c;对此深有体会。宠物空气净化器已成为铲屎官们的救星&#xff0c;能迅速清理家中的宠物毛发和异味&#xff0c;是养猫家庭的必…

四个节点即可实现的ComfyUI批量抠图工作流

原文链接&#xff1a;ComfyUI面部修复完全指南 (chinaz.com) 下图就是批量抠图的工作流 虽然工作流很简单&#xff0c;但是我们前提还是需要安装好我们的节点 首先安装我们的抠图节点 安装 BiRefNet 所需依赖&#xff1a;timm&#xff0c;如已安装无需运行 requirements.txt…

【最新发布】生成式人工智能全球研究报告

7月10日&#xff0c;美国著名的大数据分析平台和全球最大的数据分析公司之一SAS在其官网发布了一份关于生成式人工智能&#xff08;AIGC&#xff09;深度应用的调查报告。 本次的报告主要对以美国、中国、英国、法国、巴西、日本等为主的北美、拉美、欧洲、亚太地区主要国家的1…