模拟 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 的“色彩范围”算法 的相关文章

  • 包围一组点的多边形

    我有一组 S 点 2D 由 x 和 y 定义 我想找到 P 包围该组所有点的最小 含义 具有最少数量的点 多边形 P 是S 有没有已知的算法来计算这个 我在这个领域缺乏文化令人惊讶 感谢您的帮助 对于这个问题有很多算法 它被称为 最小边界框
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • numpy:大量线段/点的快速规则间隔平均值

    我沿着一维线有许多 约 100 万个 不规则间隔的点 P 这些标记线段 这样 如果点是 0 x a x b x c x d 则线段从 0 gt x a x a gt x b x b gt x c x c gt x d 等 我还有每个段的 y
  • 异或交换可以扩展到两个以上的变量吗?

    我一直在尝试将异或交换扩展到两个以上的变量 例如n变量 但我没有得到比这更好的地方3 n 1 对于两个整型变量x1 and x2你可以像这样交换它们 swap x1 x2 x1 x1 x2 x2 x1 x2 x1 x1 x2 所以 假设你有
  • Matlab 图像数据的 hist 函数

    我是 Matlab 新手 我想制作自己的函数 与 imhist 显示图像数据的直方图 完成相同的工作 但我对此完全是新手 我不知道如何做开发这样的功能 我开始做一些东西 但它非常不完整 function output args myhist
  • 如何在 python 中读取 32 位 TIFF 图像?

    我想用 python 读取 32 位浮点图像文件来进行一些图像分析 我努力了 import matplotlib pyplot as plt im plt imread path to file tif 但是 这仅将数据读取为 8 位整数值
  • 如何绘制更大的边界框和仅裁剪边界框文本 Python Opencv

    我正在使用 easyocr 来检测图像中的文本 该方法给出输出边界框 输入图像如下所示 Image 1 Image 2 使用下面的代码获得输出图像 But I want to draw a Single Bigger bounding bo
  • 子序列和

    给定一个整数数组 例如 1 2 3 1 查找是否存在总和为0并返回它 例如 1 2 3 or 2 3 1 检查每个子序列是O n 2 这效率太低了 有改进的想法吗 创建一个新数组 其中每个元素等于前一个元素加上该元素的总和 Input 1
  • 从一种数字系统转换为另一种数字系统后会有多少位数字

    主要问题 有多少位数字 让我解释 我有一个二进制数 11000000 十进制数是192 转换为十进制后 它有多少位 以十进制表示 在我的示例中 它是 3 位数字 但是 这不是问题 我在互联网上搜索并找到了一种用于整数部分的算法和一种用于小数
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 举例解释bpe(字节对编码)?

    有人可以帮忙解释一下背后的基本概念吗BPE模型 除了这张纸 https arxiv org abs 1508 07909 目前还没有那么多解释 到目前为止我所知道的是 它通过将罕见和未知的单词编码为子词单元序列来实现开放词汇表上的 NMT
  • 在java中使用BUBBLE SORT对二维字符串数组进行排序

    类似的问题已经被问过 但从来没有关于二维字符串数组 因此在尝试了很长时间之后我找不到我想要的 我正在尝试使用 BubbleSort 对 java 中的 2D 字符串数组进行排序 作为输入 我收到一个二维字符串数组 一个表 以及您应该排序的
  • 如何用约束标记一大组“传递群”?

    在 NealB解决方案之后进行编辑 与以下解决方案相比 NealB的解决方案非常非常快任何另一个 https stackoverflow com q 18033115 answers and 提出了关于 添加约束以提高性能 的新问题 Nea
  • 有没有时间复杂度为O(N)的排序算法?

    大多数排序算法的复杂度为 O NN 或 O NlogN 来实现结果 但是 对于特定的输入集 有些算法的复杂度为 O N 我想知道是否有一种排序算法在所有情况下都具有 O N 的复杂度 如果您只能比较 检查两个项目是否为 正在排序的值 那么您
  • 需要解释搜索最小大和的算法

    我正在解决 Codility 问题作为练习 但无法回答其中一个问题 我在互联网上找到了答案 但我不明白这个算法是如何工作的 有人可以引导我逐步完成它吗 这是问题 You are given integers K M and a non em
  • 如何使用网格分割图像并保留透明度边界框

    我有一些 png 图像 我想将其分成几个部分 例如按网格或大小 但每个部分应具有与原始图像相同的边界框 透明度 Example 将图像分成两部分 原来的 200 89 Output 部分 1 png 200 89 第2部分 png 200
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 我正在尝试寻找“调酒师算法”

    我正在解决旧编程竞赛中的一些示例问题 在这个问题中 我们输入了我们有多少调酒师以及他们知道哪种配方 每杯鸡尾酒的制作时间为 1 分钟 我们需要计算是否可以在 5 分钟内使用所有调酒师完成订单 解决这个问题的关键是尽可能高效地分配鸡尾酒 这就
  • 改变字符串颜色

    好的 这是我上一个问题的延续 但我有代码 private void btnTrans Click object sender EventArgs e var abrvStr inputBx Text foreach var kvp in d
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选

随机推荐

  • 连接两个列表 - '+=' 和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