Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何利用灰度转换映射在两幅图像之间进行转换

如何利用灰度转换映射在两幅图像之间进行转换
EN

Stack Overflow用户
提问于 2009-11-08 09:58:11
回答 2查看 690关注 0票数 1

假设你有两个图像A和B,第三个灰度图像T.A和B包含几乎任何东西,但假设它们是一个游戏的两个场景。

现在,假设T包含一个钻石梯度。由于灰阶,它从外面的黑色变成了内部的白色。

随着时间的推移,让我们假设256没有进一步阐述的“蜱”匹配灰度,A应该过渡到B给钻石擦拭效果。如果T包含一个由较小的矩形梯度组成的网格,它就像图像的每个部分都做了一个矩形擦拭。

如果您曾经与RPG制造商或大多数视觉新颖的引擎合作过,您可能会认识到这个概念。

当然,问题是如何做到这一点。我知道这涉及到A和B之间的每像素混合,但这就是我所得到的。

为了额外的奖励,软边呢?

和现在,结论

最后的实验,基于eJames的代码

来自最终实验的样本--波浪上升,50% http://helmet.kafuka.org/TransitionsSample.png

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-08 11:09:20

T图像中的灰度值表示时间偏移。在每像素的基础上,您的擦除效果基本如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (timeIndex from 0 to 255)
{
    for (each pixel)
    {
        if (timeIndex < T.valueOf[pixel])
        {
            compositeImage.colorOf[pixel] = A.colorOf[pixel];
        }
        else
        {
            compositeImage.colorOf[pixel] = B.colorOf[pixel];
        }
    }
}

为了说明,想象一下在timeIndex的几个值上发生了什么

  1. timeIndex == 0 (0%):这是过渡的开始。此时,合成图像中的大部分像素将是图像A的像素,除非T中的相应像素是完全黑色的。在这种情况下,合成图像像素将是图像B的像素。
  2. timeIndex == 63 (25%):此时,更多来自图像B的像素已将其输入复合图像。每个T值小于25%的像素都将从图像B中提取,其余仍为图像A。
  3. timeIndex == 255 (100%):此时,T中的每个像素都将否定条件,因此复合图像中的所有像素都是图像B的像素。

为了“平滑”过渡,您可以执行以下操作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (timeIndex from 0 to (255 + fadeTime))
{
    for (each pixel)
    {
        blendingRatio = edgeFunction(timeIndex, T.valueOf[pixel], fadeTime);
        compositeImage.colorOf[pixel] =
                    (1.0 - blendingRatio) * A.colorOf[pixel] + 
                    blendingRatio * B.colorOf[pixel];
    }
}

edgeFunction的选择取决于你。这一次产生了从A到B的线性过渡:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
float edgeFunction(value, threshold, duration)
{
    if (value < threshold) { return 0.0; }
    if (value >= (threshold + duration)) { return 1.0; }

    // simple linear transition:
    return (value - threshold)/duration;
}
票数 4
EN

Stack Overflow用户

发布于 2009-11-08 11:08:25

我会说,你从图像A开始,然后在每一步中,你对T小于我的每个位置使用图像A的像素,否则就用图像B的像素。

对于软边缘,可以定义另一个参数d,并计算像素P,如下所示:

对于每一点(x,y),您可以选择以下三个选项:

  • I< T(x,y) -d,则点等于A的点。
  • T(x,y) -d <= i< T(x,y) +d设z=i- (T(x,y) -d),点等于A(x,y)(1-z/(2d)) + B(x,y)(z/(2d))
  • I< T(x,y) +d,则点等于B的点。

这会产生一个线性边,当然,您可以在任意数量的函数之间进行选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1697356

复制
相关文章
WPF 修改按钮按下的颜色
如何在按钮按下时使用这个附加属性修改按钮颜色?实际重写按钮的样式可以看到,在按下时可以修改颜色
林德熙
2022/08/04
2.3K0
WPF 修改按钮按下的颜色
如何在按钮按下时使用这个附加属性修改按钮颜色?实际重写按钮的样式可以看到,在按下时可以修改颜色
林德熙
2018/09/19
5.8K0
WPF 修改按钮按下的颜色
fastadmin如何在列表的操作中添加其他按钮
fastadmin默认的列表操作中只有编辑和删除按钮,如果我们需要添加其他按钮,需要先找到对应的js文件。我们需要在初始化表格中添加buutons属性,原来的js代码如下:
高久峰
2023/06/03
4.3K0
win10 uwp 按下等待按钮
我们需要一个值让我们知道是不是已经完成了后台,按钮可以按下,在按下时,自动让按钮IsEnable为false。
林德熙
2018/09/18
7590
win10 uwp 按下等待按钮
WordPress网站底部的自定页面(如:网站地图等)按钮美化教程
最近浏览博客,看到不少朋友这个底部的美化,我也觉得底部的这些按钮平平无奇,就想着用css设置一个样式,从而美化按钮方法,至此分享给大家。
文曦
2022/06/09
1K0
WordPress网站底部的自定页面(如:网站地图等)按钮美化教程
win10 uwp 获取按钮鼠标左键按下
我们可以使用PointerPressed获得鼠标右键按下,但是我们如何获得左键? UWP 左键按下经常获取不到,本文:如何获得鼠标按下
林德熙
2022/08/09
1.2K0
win10 uwp 获取按钮鼠标左键按下
我们可以使用PointerPressed获得鼠标右键按下,但是我们如何获得左键? UWP 左键按下经常获取不到,本文:如何获得鼠标按下
林德熙
2018/09/18
1.5K0
生产管道中的智能剪辑
本文来自SF Video Technology 2019的一篇演讲,演讲者是来自Netflix编码团队的Eric Reinecke,该演讲主要讨论如何利用生产管道中编辑的反馈信息,帮助全产业工作者更高效率地完成工作。
用户1324186
2020/02/13
1.6K0
flutter - 如何在DartFlutter中按字母顺序对Set String进行排序?
问?我知道有List<string>,但是我需要使用Set<string>。有没有一种方法可以按字母顺序对其进行排序?
徐建国
2021/08/03
6.8K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
可以利用UTL_FILE包,但是,在此之前,要注意设置好UTL_FILE_DIR初始化参数。
AiDBA宝典
2019/09/30
28.8K0
【DB笔试面试511】如何在Oracle中写操作系统文件,如写日志?
django import_export 按用户类型显示导入导出按钮
@admin.register(InvestProject) # class InvestProjectAdmin(admin.ModelAdmin): class InvestProjectAdmin(ImportExportActionModelAdmin, ImportExportModelAdmin): """ 投资项目 """ list_display = list_display_links = \ ["name", "code", "is_go
卓越笔记
2023/02/18
6890
如何在Redis里按模式删除数据
一台Redis服务器在很短的时间里消耗了几十个G的内存,最终因为SWAP而宕机。因为这台服务器的社会背景比较复杂,所以一时无法判断犯罪嫌疑人到底是谁。
LA0WAN9
2021/12/14
4790
直播视频网站源码,按钮背景点击按下变色
以上就是直播视频网站源码,按钮背景点击按下变色的相关代码, 更多内容欢迎关注之后的文章
yunbaokeji柯基
2020/11/11
1.6K0
直播视频网站源码,按钮背景点击按下变色
FPGA按一下按键,对应端口输出单个脉冲
对于FPGA的verilog语言,,,规定一个变量不能在多个always中被赋值.但是可以在多个alway块中做判断--结合状态机思想 module state(key,led,clk); input key;//输入按键 input clk;//输入时钟48M output reg led;//输出led reg state=0;//记录按钮状态 reg[27:0] cnt=0;//计数器 always@(*) begin if(key == 0)//按下了 state = 1;
杨奉武
2018/04/18
1.5K0
[C#]不通过事件方式获取键盘按钮按下的状态
源码来自:https://www.pinvoke.net/default.aspx/user32/GetKeyboardState.html
CNXY
2020/10/27
3.5K0
git命令中带有特殊符号如@
使用带用户密码clone的方式: git clone https://username:password@remote 当username和password中含有特殊符号会导致出错, 因为为http的请求,所以需要将特殊符号encode成url格式的 java使用: String c = java.net.URLEncoder.encode(".","utf-8"); System.out.println(c); 源文档 <http://blog.csdn.net/qq1142003960/article/
千往
2018/01/24
2.1K0
点击加载更多

相似问题

如何在flash中定义动画电影剪辑的注册点

17

如何批量编辑swf动画电影剪辑的形状?

11

如何在Django中按一下按钮?

13

按一下按钮,按一下反应。

11

按一下按钮,按一下钩子

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文