IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 星轨制作与图像融合 -> 正文阅读

[C++知识库]星轨制作与图像融合

引言

欢迎关注我的公众号 “不要葱姜蒜的小屋”~~~
自遥远的古代开始,人们就没有放弃对夜空的探索。一直以来,我都想做一张星轨图。是那种自己的,不是用的别人的软件来制作,也不是调包制作。虽然调包和用别人现成的软件效果会更好,但就是在一些问题上,不想妥协,于是到了这个时候,我才可以说:‘我可以做了~’。
我的思路有两种。
一种是:图像融合。大致思路就是两张图片的每个像素点的三个rgb值乘以对应的权重值,然后相加。这种思路的弊端是:一是会出现像素值相加超过255阈值,造成的后果就是过曝。二是如果两张图片在拍摄的时候,相机发生了抖动,那在融合的时候就会出现晕影。三是,因为要考虑程序的复用,所以融合的图像就选取两张融合,那融合多张图片的时候,融合的权重在每次融合之前需要重新计算。还有就是两张图片的分辨率需要相等。
另一种思路我叫它lighter:对比两张图像的每个像素点,取最亮的那个像素点作为融合后的图像对象像素点的值。这种也有一个缺点,就是在拍摄的时候也不可以抖动,不然也会有晕影。两张图片的分辨率也需要相等。
如果使用压缩手段强行将两张不同分辨率的图片,压缩到同一分辨率,那在融合或者是lighter的时候也会出现晕影。
这是目前遇到的问题吧,接下来展示以下代码

程序介绍

图像融合,这里传入的图像需要是矩阵形式
import cv2
import numpy as np
from tqdm import tqdm
import time

def merge(image1, image2, weight1, weight2):
    can = np.zeros(image1.shape, dtype='uint8')
    for x in tqdm(range(image1.shape[0])):
        for y in range(image1.shape[1]):
            can[x][y] = np.array(image1[x][y]) * weight1 + np.array(image2[x][y]) * weight2
    return can

当然OpenCV也有相应的图像融合的算法,下图左边是我的算法,右边是OpenCV内置算法。
在这里插入图片描述
lighter,传入图像的地址就可以了

import cv2
import numpy as np
from tqdm import tqdm
import time

def lighter(image1, image2):
    first_image_brg = cv2.imread(image1)
    final_image_bgr = cv2.imread(image2)
    can = np.zeros(first_image_brg.shape)

    for x in tqdm(range(first_image_brg.shape[0])):
        for y in range(first_image_brg.shape[1]):
            if np.mean(first_image_brg[x][y]) < np.mean(final_image_bgr[x][y]):
                can[x][y] = final_image_bgr[x][y]
            else:
                can[x][y] = first_image_brg[x][y]
    return can

这个东西在我写完之后,我在pillow库找到了几乎和我思路一样的函数方法。
在这里插入图片描述
但是很明显,pillow库是用c语言写的,效率比我高,而且我还看不到它的源码。唉~。这是lighter执行后的效果,它会自动替换为较亮的元素。我试了下pillow库的lighter方法,得到的图像观感上没有差别。但无奈它是c语言写的,在本地么的源码看。
在这里插入图片描述
等过几天天晴了,就开始追着星星拍拍拍~

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:03:10  更:2021-08-08 11:06:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/9 12:13:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码