模拟 Photoshop 的“色彩范围”算法

2023-12-21

我正在尝试用在服务器上完成的自动过程来替换在 PhotoShop 中完成的手动过程。目前,在 PhotoShop 中,“颜色范围”工具用于使用“模糊度”系数来选择一系列颜色,并根据处理的部分从黑色或白色开始。

我最初的方法包括使用 L*a*b 颜色空间中的发光阈值以及候选颜色和黑/白之间的 DE94。在这两种情况下,我都选择了不应该选择的颜色和/或没有选择应该选择的颜色。

我的直觉是我应该使用圆锥体而不是球体进行选择。

谁能深入了解 Photoshop 正在做什么以及我的方向是否正确?另外,如果有一个库可以做到这一点那就太棒了,我目前正在用 C 编写这个。


根据我在 Photoshop 中看到的情况,该算法可能类似于以下内容:

  1. 定义一个计算两种颜色的接近度的函数:例如,在颜色空间中使用欧几里德距离 - 即使用以下公式计算 RGB 空间中两个像素的颜色之间的距离欧氏距离公式 http://en.wikipedia.org/wiki/Euclidean_distance.
  2. 接下来,使用fallof函数调整每个像素的强度, 如那个高斯函数 http://en.wikipedia.org/wiki/Gaussian_function。你可能需要调整 一些参数。澄清一下:你计算两个的距离 RGB 空间中的像素(不是 2D 像素坐标中的距离),以及 然后将其输入到衰减函数中,该函数将提供结果 0.0 到 1.0 之间。将当前的所有颜色分量相乘 像素及其衰减函数的结果。这样做是为了 图像的每个像素。
  3. 如果你想添加效果的范围参数,只需使用 再次为每个像素提供相同的衰减函数,但这次提供它 所选像素与当前像素之间的欧氏距离 像素 2D 空间中的像素(像素之间的距离 图像上的坐标)。

如果您只想选择某些像素,那么您可以将衰减值存储在矩阵中,而不是直接在图像中的像素上应用效果doubles 的范围为 0.0 到 1.0。然后,选择一个阈值,高于该阈值您将选择给定像素。

例如,如果对于坐标 (x, y) 处的像素,步骤 2. 生成 0.8,而步骤 3. 生成 0.5,则坐标为 x 和 y 的矩阵元素的值应为0.8*0.5=0.4。如果您选择的选择阈值低于 0.4,您将选择像素 (x, y),否则您将不会选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模拟 Photoshop 的“色彩范围”算法 的相关文章

  • 用于计算三角函数、对数或类似函数的算法。仅限加减法

    我正在修复 Ascota 170 古董机械可编程计算机 它已经开始工作了 现在我正在寻找一种算法来展示其功能 例如计算三角或对数表 或类似的东西 不幸的是 从数学运算来看 计算机只能进行整数的加减法 从 1E12到1E12的55个寄存器 甚
  • 计算具有 3 个循环的算法的复杂度

    我尝试解决以下练习 以下代码片段最坏情况运行时间的增长顺序是什么 作为 N 的函数 int sum 0 for int i 1 i lt N i for int j 1 j lt i i j for int k 1 k lt j j k s
  • 如何检查无向图是否有奇数环

    我试图找到一个 O V E 时间算法来检查是否已连接 无向图有或没有奇数环 我正在考虑对图进行广度优先搜索 并尝试将顶点标记为黑色和白色 以便没有两个标记为相同颜色的顶点相邻 是否有任何已知的更简洁的算法可以在线性时间内解决这个问题 你的方
  • 可以用背景颜色填充表格单元格吗?

    我有一个表格单元格未完全填充文本 因此背景颜色不会覆盖整个单元格 我仍然希望整个表格单元格填充相同的颜色 而不在整个表格上使用背景颜色 那么是否可以用一种颜色填充整个单元格而不在整个表格上使用背景颜色呢 您可以将一个类分配给 td 元素 然
  • Vim 插入模式下光标线颜色变化

    有一个很好的片段可以改变光标颜色 if term xterm rxvt use an orange cursor in insert mode let t SI
  • 序列和与 GCD

    大约一个月前 我在编程挑战中遇到了这个问题 但社论尚未发布 所以我在这里问 有一个大小为 N 的数组 A 求 A 的 K 个长度子序列的总和 GCD Example 如果 A 1 2 3 且 K 2 1 2 3 总和 1 GCD 3 1 3
  • 一种良好且简单的随机性测量方法

    获取一长整数序列 例如 100 000 个 并返回序列随机性的测量值的最佳算法是什么 该函数应返回单个结果 如果序列并非完全随机 则返回 0 如果完全随机 则返回 1 如果序列有点随机 它可以给出介于两者之间的东西 例如0 95 可能是一个
  • PyTorch 中的数据增强

    我对 PyTorch 中执行的数据增强有点困惑 现在 据我所知 当我们执行数据增强时 我们保留原始数据集 然后添加它的其他版本 翻转 裁剪 等 但 PyTorch 中似乎并没有发生这种情况 据我从参考文献中了解到 当我们使用data tra
  • 如何在 JavaScript 中构建树模式匹配算法?

    好吧 这是一个有点复杂的问题 但是 tl dr 基本上是如何使用 模式树 解析 实际树 如何检查特定的树实例是否与特定的模式树匹配 首先 我们有我们的结构模式树 模式树通常可以包含以下类型的节点 sequence节点 匹配一系列项目 零个或
  • GrabCut - bgdModel 和 fgdModel 为空 - 断言错误

    我正在尝试使用 OpenCV2 1 C 中的 GrabCut 算法进行图像分割 这是我的代码 Mat rgbWorkImage imread argv 1 Mat mask mask Scalar 0 Mat bgdModel fgdMod
  • 分而治之算法找到两个有序元素之间的最大差异

    给定一个整数数组 arr 找出任意两个元素之间的差异 使得较大的元素出现在 arr 中较小的数字之后 Max Difference Max arr x arr y x gt y 例子 如果数组是 2 3 10 6 4 8 1 7 那么返回值
  • Java - 调整图像大小而不损失质量

    我有 10 000 张照片需要调整大小 因此我有一个 Java 程序来执行此操作 不幸的是 图像的质量损失很大 而且我无法访问未压缩的图像 import java awt Graphics import java awt AlphaComp
  • 如何将多边形放入另一个多边形内[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有两个多边形 如下图所示 左边是 粗多边形 右边是 最终多边形 现在 我正在寻找算法来将 最终多边形 拟合到 粗糙多边形 内 并具有
  • 如何求两个地点的经纬度距离?

    我有一组位置的纬度和经度 怎么找distance从集合中的一个位置到另一个位置 有公式吗 半正矢公式假定地球是球形的 然而 地球的形状更为复杂 扁球体模型会给出更好的结果 如果需要这样的精度 你应该更好地使用文森特逆公式 See http
  • 当给定块大小时反转单链表

    有一个单连接链表 并给出了块大小 例如 如果我的链表是1 gt 2 gt 3 gt 4 gt 5 gt 6 gt 7 gt 8 NULL我的块大小是4然后反转第一个4元素 然后是第二个 4 个元素 问题的输出应该是4 gt 3 gt 2 g
  • heapq.nlargest 的时间复杂度是多少?

    我在看演讲者说 获得t列表中最大的元素n元素可以在O t n 这怎么可能 我的理解是创建堆将是O n 但是复杂度是多少nlargest本身就是O n t or O t 实际的算法是什么 在这种情况下 说话者是错误的 实际成本是O n log
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • 图像处理:什么是遮挡?

    我正在开发一个图像处理项目 我遇到了这个词闭塞在许多科学论文中 遮挡在图像处理中意味着什么 字典只是给出了一般的定义 谁能使用图像作为上下文来描述它们 遮挡意味着您想看到某些内容 但由于传感器设置的某些属性或某些事件而无法看到 它到底如何表
  • 如何光栅化旋转矩形(通过 setpixel 在 2d 中)

    我有四个 2d 顶点 A B C D 的旋转矩形 我需要在像素缓冲区中 有效地 光栅化 绘制它 使用 setpixel x y 颜色 怎么做 我正在尝试使用一些代码 例如 convertilg a b c d do up down left

随机推荐

  • 连接两个列表 - '+=' 和extend() 之间的区别

    我已经看到实际上有两种 也许更多 方法可以在 Python 中连接列表 一种方法是使用extend method a 1 2 b 2 3 b extend a 另一个使用加号 运算符 b a 现在我想知道 这两个选项中哪一个是进行列表连接的
  • 用于 Azure Blob 存储的 Kafka 连接器

    我需要将推送到 Kafka 的消息存储在深度存储中 我们正在使用 Azure 云服务 因此我认为 Azure Blob 存储可能是更好的选择 我想使用 Kafka Connect 的接收器连接器 API 将数据推送到 Azure Blob
  • Flask 找不到模板

    我的项目结构如下 run py lib mysite conf init py flask app settings py pages templates index html views py init py This is mysite
  • 如何在 KornShell 中自定义显示提示以显示主机名和当前目录?

    我在 Solaris 上使用 KornShell ksh 目前我的 PS1 环境变量是 PS1 HOSTNAME PWD 并且提示显示 hostname full path to current directory 但是 我希望它显示 ho
  • 使用 Chrome 进行 WebStorm 调试 - 具有有用控制台和在 WebStorm 中设置断点的最佳工作流程

    我想要实现的主要目标是直接在 WebStorm 中设置断点 而不必再次在 Chrome 中查找它们 我目前以警告作为最快的方法来做到这一点 而不丢失 Chrome 中可用的任何功能 我目前正在尝试从在 Chrome 中调试 JavaScri
  • 使用素数输入维度训练 CNN 的问题

    我目前正在使用 Keras 自动编码器 开发 CNN 模型 我的输入是这种类型 47 47 3 即具有 3 RGB 层的 47x47 图像 我过去曾使用过一些 CNN 但这次我的输入尺寸是素数 47 像素 我认为这会导致我的实现出现问题 特
  • 如何在 JavaScript 中将 Ajax 转换为 Fetch API?

    所以我正在使用RiveScript 的 JavaScript 端口 https cdnjs cloudflare com ajax libs rivescript 1 17 2 rivescript js它使用ajax 当然我不想再使用jQ
  • 如何跟踪Linux内核中的write系统调用?

    我正在尝试这样做 我通过 iperf 一种开源工具 从一台机器向另一台机器发送数据包 我想跟踪写入系统或发送调用 请帮助我做到这一点 如果有人可以指导通过 Ftrace 框架来跟踪系统调用 否则通过任何其他跟踪工具就太好了 困难的部分是准确
  • Git 克隆、推送和拉取都挂起,没有消息

    直到昨天 git在我的电脑上完美运行 现在 每当我尝试推送 拉取或克隆存储库时 git 都会挂起 我已经尝试过 SSH 和 HTTPS 与围绕此问题发布的许多其他 StackOverflow 问题不同 我的操作在同一早期阶段挂起 例如 运行
  • 如何在 Bazel 中静态链接系统库?

    如何在大多数静态模式下静态链接系统库 linkstatic 1 我尝试使用 Wl Bstatic lboost thread Wl Bdynamic 或 Wl Bstatic lboost thread Wl Bdynamic 但它们都不起
  • 不可见字符 - ASCII

    有没有无形的人物 我已经在谷歌上检查了隐形字符 最终得到了很多答案 但我不确定这些答案 Stack Overflow 上的人可以告诉我更多相关信息吗 我还检查了 Facebook 上的个人资料 发现该用户的个人资料中没有任何姓名 这怎么可能
  • 从 aws cloudformation 描述堆栈获取输出

    我正在使用下面的方法来获取堆栈信息 http docs aws amazon com cli latest reference cloudformation describe stacks html我想通过 AWS Cli aws clou
  • 对带有&不带重定向的“mysql -e”输出格式有点好奇

    说我跑步的时候mysql u user p e select id from db users limit 1 I got id 8434 当我将输出 标准输出重定向到某个文件时 例如mysql u user p e select id f
  • 写入 webroot 目录之外的文本文件

    我正在尝试使用 PHP 读取和写入文本文件 使用 html 页面上的按钮读取文件 该文件是使用 html 页面上的按钮编写的 该按钮从文本框中获取参数 当文本文件位于 webroot 目录中时 我成功写入文本文件 我希望能够读取 写入位于
  • 如何检测 jQuery 触发事件完成?

    我试图触发依赖于第一个事件的第二个事件 如下所示 productFamilyId val data contents productfamily productFamilyId trigger change function product
  • 使用起订量和 TDD,从哪里开始?

    我有一个服务器应用程序 我想知道如果我想开始实施 TDD 并使用 Moq 我应该从哪里开始 我可以读哪些关于这个主题的好书 而且不太 面向网络 我对此事有疑问 例如 我应该模拟我想要测试的每个对象 还是只模拟那些我无法实现的对象 例如文本编
  • 如何在 R 中添加副标题并更改 ggplot 图的字体大小?

    我尝试使用添加字幕 opts subtitle text 但什么也没有出现 主标题确实有效 opts title text 我还想为轴 标签和坐标 使用更大的字体 但我不知道该怎么做 theme get 将向您显示可以使用的 隐藏 选项op
  • UnboundLocalError:局部变量...在赋值之前引用[重复]

    这个问题在这里已经有答案了 import hmac base64 hashlib urllib2 base https def makereq key secret path data hash data path chr 0 data s
  • 未捕获的类型错误:数据[选项]不是函数 bootstrap.js:1215

    我使用 bootstrap lightbox 时收到以下错误here http ashleydw github io lightbox Uncaught TypeError data option is not a function boo
  • 模拟 Photoshop 的“色彩范围”算法

    我正在尝试用在服务器上完成的自动过程来替换在 PhotoShop 中完成的手动过程 目前 在 PhotoShop 中 颜色范围 工具用于使用 模糊度 系数来选择一系列颜色 并根据处理的部分从黑色或白色开始 我最初的方法包括使用 L a b