Plugins Gimp 2.10.8中图像渐变插件的代码 我写了一个C++代码,在颜色或灰度图像(ppm文件)上进行边缘检测。

Plugins Gimp 2.10.8中图像渐变插件的代码 我写了一个C++代码,在颜色或灰度图像(ppm文件)上进行边缘检测。,plugins,detection,edge-detection,gimp,Plugins,Detection,Edge Detection,Gimp,我的代码工作得很好,但不如一个特定的Gimp插件好,特别是当检测到更微弱的边缘(低亮度梯度)时。我提到的插件位于Gimp 2.10.8中的过滤器/边缘检测/图像梯度下。鼠标悬停表示“通过中心差计算梯度大小和/或方向” 下面我嵌入了一个灰色的测试图像来比较结果(即梯度强度),虽然我的作品也是彩色的。测试图像由13个不同光度的圆环组成(每个圆环的光度恒定)。在向外径向上,两个相邻环之间的光度差从2个光度单位(内环)增加到30个光度单位(外环) 正如预期的那样,检测到的内环梯度较小,而外圈梯度较高。问

我的代码工作得很好,但不如一个特定的Gimp插件好,特别是当检测到更微弱的边缘(低亮度梯度)时。我提到的插件位于Gimp 2.10.8中的过滤器/边缘检测/图像梯度下。鼠标悬停表示“通过中心差计算梯度大小和/或方向”

下面我嵌入了一个灰色的测试图像来比较结果(即梯度强度),虽然我的作品也是彩色的。测试图像由13个不同光度的圆环组成(每个圆环的光度恒定)。在向外径向上,两个相邻环之间的光度差从2个光度单位(内环)增加到30个光度单位(外环)

正如预期的那样,检测到的内环梯度较小,而外圈梯度较高。问题是,我的C++代码对GiPin插件的小梯度较不敏感,如下面两幅图像所示。p> 我在哪里可以找到Gimp图像渐变插件的代码,以便从中学习一些东西?我对其他用于边缘检测的Gimp插件不感兴趣(我验证了它们没有图像渐变那么好,至少在我的应用程序中是这样)

它在


文件是

一个可能的区别是Gimp代码在线性空间中工作,而如果您使用的是普通RGB 8位值,则使用的是伽马校正值。AFAIK GEGL进行了大量的lineargamma数据转换。另外,您还可以使用GEGL作为命令行模块(但我还没有弄清楚如何使用)。这可以帮助您更快地运行测试。我不确定gamma扩展或压缩是否可以解释我的结果。为了验证这一点,我构建了另一个测试图像,这次使用了相同的亮度步骤:Gimp图像梯度边缘检测器和我的代码都以相同的强度渲染所有“边缘”,这是应该的方式。我认为你是对的,这里一定有一些非线性问题,但它必须应用于梯度本身,而不是图像的原始局部亮度(如伽马校正,AFAIK)。仍然在看Gimp代码-对我来说不容易。