{"id":16994845,"url":"https://github.com/designerspr/hoshinoweaver","last_synced_at":"2025-04-12T05:26:30.371Z","repository":{"id":198058766,"uuid":"539093416","full_name":"Designerspr/HoshinoWeaver","owner":"Designerspr","description":"A Python-based software for image stacking from extensive amount of photos, specifically tailored for creating star trail images.","archived":false,"fork":false,"pushed_at":"2024-10-30T09:10:25.000Z","size":35206,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-26T00:51:17.582Z","etag":null,"topics":["image-stacking","photo","startrails"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Designerspr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-20T16:43:47.000Z","updated_at":"2024-10-30T09:10:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"e758a390-33c0-48af-b682-4b4c288118e8","html_url":"https://github.com/Designerspr/HoshinoWeaver","commit_stats":null,"previous_names":["designerspr/easystacker","designerspr/hoshinoweaver"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Designerspr%2FHoshinoWeaver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Designerspr%2FHoshinoWeaver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Designerspr%2FHoshinoWeaver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Designerspr%2FHoshinoWeaver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Designerspr","download_url":"https://codeload.github.com/Designerspr/HoshinoWeaver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248521290,"owners_count":21118045,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["image-stacking","photo","startrails"],"created_at":"2024-10-14T03:46:46.536Z","updated_at":"2025-04-12T05:26:30.341Z","avatar_url":"https://github.com/Designerspr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003ch1\u003e\u003ccenter\u003eHoshinoWeaver | 织此星辰\u003c/center\u003e\u003c/h1\u003e\n\n[![GitHub release](https://img.shields.io/github/release/Designerspr/HoshinoWeaver.svg)](https://github.com/Designerspr/HoshinoWeaver/releases/latest) [![GitHub Release Date](https://img.shields.io/github/release-date/Designerspr/HoshinoWeaver.svg)](https://github.com/Designerspr/HoshinoWeaver/releases/latest) [![license](https://img.shields.io/github/license/Designerspr/HoshinoWeaver)](./LICENSE) [![Github All Releases](https://img.shields.io/github/downloads/Designerspr/HoshinoWeaver/total.svg)](https://github.com/Designerspr/HoshinoWeaver/releases)\n\n[**简体中文** | [English](./docs/README-en.md)]\n\n\u003c/div\u003e\n\n## 简介\n\nHoshinoWeaver 是一个基于 Python 的图像堆栈软件项目，可用于快速从大量照片中创建星轨图像。其针对星轨堆栈实现了优化，包含了针对星轨的实验性功能，还可用于各种模拟慢门场景。\n\nHoshinoWeaver 的主要特性如下：\n\n1. ![new-tag](https://img.shields.io/badge/new!-red) 用户友好的图形化界面：可以借助图形化界面快速预览和配置叠加相关设置。\n2. 支持多种常用的叠加模式：常规的星轨叠加，有渐入/渐出效果的星轨，平均值叠加（暂不支持星点对齐），最大值+平均值的混合叠加模式等。\n3. 运行快速，内存友好：支持多进程读入与叠加，叠加速度与主流星轨叠加软件齐平；无需一次性将所有照片加载到内存中，对低配置设备更友好。\n4. 载入和输出图像时支持完整的EXIF信息和色彩配置信息，能够最大程度输入输出的效果一致性，并保存EXIF更丰富的图像。\n5. 实验性功能：包含适用于星轨场景的实验性功能，帮助用户简便获得理想的图像。更多介绍见[已实现的实验性功能](#已实现的实验性功能)。\n\n## 发行版本\n\n目前可以从[Github的Release页](https://github.com/Designerspr/HoshinoWeaver/releases)获取到HoshinoWeaver的所有发行版本。\n\n注意：推荐使用稳定的发行版本。附带有alpha, beta 或debug标识的版本是实验性版本或调试版本，可能仍存在一些缺陷。\n\n## 环境要求\n\n### 环境\n\n至少在 Python \u003e= 3.6 的环境运行该项目。推荐版本为3.9以上。\n\n### 依赖包\n\n见 [requirements.txt](./requirements.txt)。可通过在项目目录下运行 `pip install -r requirements.txt` 快速安装这些依赖包。\n\n在部分设备和python版本上，可能需要手动编译 pyexiv2 以正常进行元数据读写。具体编译方法参见[pyexiv2的说明](https://github.com/LeoHsiao1/pyexiv2/blob/master/docs/Tutorial.md)。\n\n## 用法\n\nHoshinoWeaver支持两种方式启动，即图形界面模式(GUI)与命令行模式(CLI)。推荐从图形界面模式启动，可以更容易的预览与配置叠加任务。\n\n### 图形界面模式(GUI)\n\n要启动图形界面，可以直接运行`HoshinoWeaver desktop.py`:\n\n```bash\npython \"HoshinoWever desktop.py\"\n```\n\n如果您使用的发行版本，则直接运行与以上同名的可执行文件即可。当您首次启动图形界面，引导会说明相关用法。也可以随时从“帮助”中调出有关说明。\n\n### 命令行模式(CLI)\n\n如果希望从命令行启动HoshinoWeaver，则运行以下命令：\n\n```sh\npython launcher.py  --mode {mean,max,mask-mix,sigmaclip-mean} \n                    [--ground-mask GROUND_MASK]\n                    [--fade-in FADE_IN]\n                    [--fade-out FADE_OUT]\n                    [--int-weight]\n                    [--jpg-quality JPG_QUALITY]\n                    [--png-compressing PNG_COMPRESSING]\n                    [--output OUTPUT]\n                    [--output-bits OUTPUT_BITS]\n                    [--resize RESIZE]\n                    [--num-processor NUM_PROCESSOR]\n                    [--debug]\n                   dirname\n```\n\n命令行参数释义如下：\n\n#### 位置参数\n  * `dirname` 图像文件夹目录。目前仅支持直接使用单个目录作为输入。\n\n#### 可选参数\n  * `--mode` 堆栈模式。这是一个 **必须的** 参数。目前 HoshinoWeaver 支持 4 中堆栈模式，分别为“最大值”、“平均值”、“Sigma裁切均值”、“最大值-裁切均值混合堆栈”。各个模式的工作原理见[堆栈模式](#已实现的叠加模式算法).\n  * `--ground-mask` 地景掩模图像路径。该路径应当指向一个标注出天空区域的图像（黑白图像，但需要按RGB图像储存）。其中天空部分为白色，地景部分为黑色。该参数仅在使用需要地景区域的算法下生效。\n  * `--fade-in` 星轨渐入比值。取值为0到1。仅在产生星轨的模式下生效。\n  * `--fade-out` 星轨渐出比值。取值为0到1。需要和渐入比值求和小于1。仅在产生星轨的模式下生效。\n  * `--int-weight` 叠加时使用整数代替浮点数。这可以带来较大的运行速度提升，并几乎对结果图像没有影响。大多数情况下推荐启用该项。\n  * `--jpg-quality` 指定输出的JPEG图像质量。仅在输出JPEG图像时生效。默认值为80。\n  * `--png-compressing` 指定输出的PNG图像压缩程度。仅在输出PNG图像时生效。默认值为0。\n  * `--output` 指定输出图像文件名称。\n  * `--output-bits` 指定输出图像位数。通常应从{8,16}中选择。当输出JPEG图像时，输出图像位数始终为8。\n  * `--resize` 调整图像在运行过程中的尺寸。该值在输入阶段生效，因此推荐使用其进行快速叠加获得预览效果。不推荐直接使用该项放缩图像，因为可能损伤图像质量。\n  * `--num-processor` 指定使用的并行进程数目。不推荐超过使用电脑的逻辑核心数量。\n  * `--debug` 指定该项时，输出流将会打印debug级别信息。在调试场景下可启用。\n\n#### 示例\n\n运行以下指令，创建一个具有30%渐入和30%渐出的TIFF星轨图像：\n\n```sh\npython launcher.py /path/to/your/work_dir --mode max --fade-in 0.3 --fade-out 0.3 --int-weight --output \"img.tif\"\n```\n\n运行以下指令，创建一个平均值堆栈的JPEG图像：\n\n```sh\npython launcher.py /path/to/your/work_dir --mode mean --output \"img.jpg\"\n```\n\n## HoshinoWeaver已实现\n\n### 已支持的数据类型\n\n* 支持以下数据类型正常加载图像和元数据：\n![TIFF/TIF](https://img.shields.io/badge/-TIFF%2FTIF-green) ![JPEG/JPG](https://img.shields.io/badge/-JPEG%2FJPG-green) ![PNG](https://img.shields.io/badge/-PNG-green)\n\n* 支持以下数据类型加载图像和元数据，但还需要更多测试和调整[1]：\n![CR2](https://img.shields.io/badge/-CR2-darkgreen) ![CR3](https://img.shields.io/badge/-CR3-darkgreen) ![ARW](https://img.shields.io/badge/-ARW-darkgreen) ![NEF](https://img.shields.io/badge/-NEF-darkgreen) ![DNG](https://img.shields.io/badge/-DNG-darkgreen) ![RA2](https://img.shields.io/badge/-RA2-darkgreen)\n\n* 支持仅加载以下类型图像，暂不支持加载（或数据本身不支持）元数据。\n![BMP](https://img.shields.io/badge/-BMP-yellow) ![GIF](https://img.shields.io/badge/-GIF-yellow) ![FITS](https://img.shields.io/badge/-FITS-yellow)\n\n注：[1] 主要是不支持加载和后期相关的调整参数。例如，`HoshinoWeaver`支持读取RAW文件，但暂不支持将PS通用的XMP中的数据加载到RAW图像上。\n\n### 已实现的叠加模式算法\n\n* 最大值叠加： 最大值叠加模式下，结果图像的某一像素取值通过所有图像在该位置的最大值作为结果。通常的星轨叠加即采用该模式。 HoshinoWeaver 还支持在使用最大值叠加时配置渐入渐出比例，创建类似半岛雪人插件效果的渐变星轨。\n\n* 平均值叠加： 平均值叠加模式下，结果图像的某一像素取值通过所有图像在该位置的平均值作为结果。平均值叠加通常被用于夜间地景降噪，日间模拟慢门等。\n\n* Sigma裁剪均值：Sigma裁剪均值是平均值叠加的改进版本。在计算均值时，Sigma裁剪均值会排除显著异常的数据，用以获得对显著干扰的稳健性。当图像存在部分偏差较大的噪声时（如亮灯，过车等），使用Sigma裁剪均值可以获得更纯净的图像。\n\n* 基于掩模的混合叠加 (实验性功能):参见[已实现的实验性功能](#已实现的实验性功能)部分。\n\n### 已实现的叠加数据和计算支持\n\n* 多进程读入和叠加：HoshinoWeaver 可以多进程并行的读入与叠加，叠加速度与主流星轨叠加软件齐平。\n\n* 色彩配置文件/EXIF信息的读入与嵌入：载入和输出图像时支持完整的EXIF信息和色彩配置信息，能够最大程度保证输入输出的效果一致性，并保存EXIF更丰富的图像。\n\n* 高位数的叠加工作流和输出：即使使用8位图像作为输入和输出，也会采用更高位数的叠加工作流，降低计算中的精度损失。\n\n### 已实现的实验性功能\n\n* 基于掩模的混合叠加 (实验性功能): 最终合成图像的天空部分将使用最大值叠加，地面部分则使用平均值叠加结果组合而成。使用该叠加需要额外提供一个用于框选天空部分的掩模图像(Mask)。最大值叠加和均值叠加的图像会存在亮度差异，该差异将通过 HoshinoWeaver 内置的算法修正到相同水平。\n\n### HoshinoWeaver的未来计划\n\n目前HoshinoWeaver仍然处在较早期的开发阶段。主要的未来开发方向有：\n\n1. 图形界面\n  * 叠加预览\n  * 蒙版绘制\n\n2. 支持已有的叠加算法/选项\n  * 去除热燥\n  * 创建星轨延时序列\n  * 实现星空对齐/星空地景分别对齐的常规堆栈降噪\n  * 实现星轨断点的补齐(P0)\n  * 支持创建时间切片\n\n3. 输入和输出数据支持\n  * 支持视频抽帧叠加\n  * 适当的连接断掉的星轨\n  * 更好支持各种数据类型（Raw的XMP等）\n  * 为max+mean增加并行叠加模式，减少IO次数\n\n4. 实验性功能\n  * 简化基于亮度估算方法中对图像方差的预估函数\n  * 为混合叠加方法引入高光保护机制\n  * 基于排异的混合叠加星轨算法\n  * 星轨特殊排异（灯，飞机线？）/反排异（仅保留飞机/灯）(P0)\n  * 减弱星点数量，以支持从密集星点图像创建稀疏星轨\n  * 从内存估算的并行数量，实现更高效的性能\n  * 规避/弱化星轨叠加时的网格问题(P0)\n  * 基于蒙版对齐地景实现后期防抖，弱化拍摄过程中小幅位移导致的星轨抖动造成的影响\n\n5. 项目层面\n  * 完善的测试流程\n  * 日志系统\n  * 合理的错误\n  * 文档\n\n## 许可\n\nHoshinoWeaver 根据 Mozilla 公共许可证 2.0 (MPL-2.0) 获得许可。这意味着您可以自由使用、修改和分发该软件，但须满足以下条件：\n\n* 源代码可用性：您对源代码所做的任何修改也必须在 MPL-2.0 许可证下可用。这确保了社区可以从改进和变化中受益。\n* 文件级 Copyleft：您可以将此软件与不同许可证下的其他代码结合使用，但对 MPL-2.0 许可文件的任何修改都必须保留在同一许可证下。\n* 无保证：软件按“原样”提供，不提供任何形式的明示或暗示的保证。使用风险自负。\n\n欲了解更多详细信息，请参阅[MPL-2.0许可证](https://www.mozilla.org/en-US/MPL/2.0/)。\n\n## 附录\n\n### 为什么叫 HoshinoWeaver?\n\nTO BE DONE\n\n### 特别鸣谢\n\n感谢所有参与 HoshinoWeaver 测试和提出建议的用户（目前还没有就是了🤔️）。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdesignerspr%2Fhoshinoweaver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdesignerspr%2Fhoshinoweaver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdesignerspr%2Fhoshinoweaver/lists"}