如何计算二维对数色度?

2024-02-03

我的目标是去除图像中的阴影。我使用 C++ 和 OpenCV。当然,我缺乏足够的数学背景,而且不是以英语为母语,这让一切变得更难理解。

在阅读了消除阴影的不同方法后,我发现了应该对我有用的方法,但它依赖于他们所谓的“二维色度" and "二维对数色度空间但即使这个术语在不同的来源中似乎也不一致。关于该主题的论文很多,这里列出的很少:

http://www.cs.cmu.edu/~efros/courses/LBMV09/Papers/finlayson-eccv-04.pdf http://www.cs.cmu.edu/~efros/courses/LBMV09/Papers/finlayson-eccv-04.pdf http://www2.cmp.uea.ac.uk/Research/compvis/Papers/DrewFinHor_ICCV03.pdf http://www2.cmp.uea.ac.uk/Research/compvis/Papers/DrewFinHor_ICCV03.pdf http://www.cvc.uab.es/adas/publications/alvarez_2008.pdf http://www.cvc.uab.es/adas/publications/alvarez_2008.pdf http://ivrgwww.epfl.ch/alumni/fredemba/papers/FFICPR06.pdf http://ivrgwww.epfl.ch/alumni/fredemba/papers/FFICPR06.pdf

我通过搜索正确的单词和解释将谷歌撕成碎片。我发现最好的是光照不变图像 https://stackoverflow.com/questions/10922467/illumination-invariant-image这对我没有多大帮助。

我尝试重复公式log(G/R), log(B/R)第一篇论文第 3 页中描述了获得类似于 2b 的数字。

作为我使用的输入http://en.wikipedia.org/wiki/File:Gretag-Macbeth_ColorChecker.jpg http://en.wikipedia.org/wiki/File:Gretag-Macbeth_ColorChecker.jpg

Output I get is log-chromacity

我的源代码:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

int main( int argc, char** argv ) {
  Mat src;

  src = imread( argv[1], 1 );

  if( !src.data )
    { return -1; }

  Mat image( 600, 600, CV_8UC3, Scalar(127,127,127) );

  int cn = src.channels();
  uint8_t* pixelPtr = (uint8_t*)src.data;

  for(int i=0 ; i< src.rows;i++) {
      for(int j=0 ; j< src.cols;j++) {
          Scalar_<uint8_t> bgrPixel;
          bgrPixel.val[0] = pixelPtr[i*src.cols*cn + j*cn + 0]; // B
          bgrPixel.val[1] = pixelPtr[i*src.cols*cn + j*cn + 1]; // G
          bgrPixel.val[2] = pixelPtr[i*src.cols*cn + j*cn + 2]; // R
          if(bgrPixel.val[2] !=0 ) { // avoid division by zero
              float a= image.cols/2+50*(log((float)bgrPixel.val[0] / (float)bgrPixel.val[2])) ;
              float b= image.rows/2+50*(log((float)bgrPixel.val[1] / (float)bgrPixel.val[2])) ;
              if(!isinf(a) && !isinf(b))
                  image.at<Vec3b>(a,b)=Vec3b(255,2,3);
          }
      }
  }

  imshow("log-chroma", image );
  imwrite("log-chroma.png", image );
  waitKey(0);

}

我缺少什么或误解了什么?


通过阅读论文通过光照不变性恢复无阴影的色度图像 http://www2.cmp.uea.ac.uk/Research/compvis/Papers/DrewFinHor_ICCV03.pdf您发布的内容和您的代码,我想问题是您的坐标系(X/Y 轴)是线性的,而在论文中坐标系是 log(R/G) by log(B/G)。

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

如何计算二维对数色度? 的相关文章

  • 如何在 .NET Framework 2.0 中模拟“Func<(Of <(TResult>)>) 委托”?

    我尝试使用这个类代码项目文章 http www codeproject com KB threads AsyncVar aspx在 VB NET 和 NET Framework 2 0 中 除了这一行之外 所有内容似乎都可以编译Privat
  • 如何让 Swagger 插件在自托管服务堆栈中工作

    我已经用 github 上提供的示例重新提出了这个问题 并为任何想要自己运行代码的人提供了一个下拉框下载链接 Swagger 无法在自托管 ServiceStack 服务上工作 https stackoverflow com questio
  • 计算 Richtextbox 中所有单词的最有效方法是什么?

    我正在编写一个文本编辑器 需要提供实时字数统计 现在我正在使用这个扩展方法 public static int WordCount this string s s s TrimEnd if String IsNullOrEmpty s re
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 每当使用 import cv2 时 OpenCV 都会出错

    我在终端上使用 pip3 install opencv contrib python 安装了 cv2 并且它工作了 但是每当我尝试导入 cv2 或运行导入了 cv2 的 vscode 文件时 在 python IDLE 上它都会说 Trac
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • System.IO.FileNotFoundException:找不到网络路径。在 Windows 7 上使用 DirectoryEntry 对象时出现异常

    我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 计算机 这是我的代码 DirectoryEntry obDirEntry new DirectoryEntry WinNT hostName hostName
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • 从列表中选择项目以求和

    我有一个包含数值的项目列表 我需要使用这些项目求和 我需要你的帮助来构建这样的算法 下面是一个用 C 编写的示例 描述了我的问题 int sum 21 List

随机推荐

  • 签名板和 dompdf

    我在用托马斯 J 布拉德利的插件 http thomasjbradley ca lab signature pad 用于在 html 表单底部绘制两个签名 然后使用 dompdf 将其转换为 pdf 并使用 sendmail 作为附件通过电
  • Cumulocity smarREST 响应模板

    我正在尝试设置 Cumulocity smartREST 响应模板以提供应用程序存储的设备对象的信息 我认为这是不可能的 但我想确认一下 因为文档很简短而且不清楚 我之前已经成功实现了测量发布模板 但我现在正在尝试执行库存获取 我已经在设备
  • Delphi 中 JSON 与 XML 解析速度

    我们正在创建一个使用大量 XML 解析的应用程序 我想也许可以使用 JSON 因为我们可以使用 JSON 作为 XML 的替代品 我需要测试 JSON 或 XML 哪个更快 但想先在这里征求意见 JavaScript 中的 JSON 是原生
  • PHP 错误处理适用于 MySQL 和 MySQLi,但不适用于 PDO

    我刚刚将一堆 MySQL 和 MySQLi 表单重构为 PDO 一切似乎都正常 现在开始错误处理 在我一直使用的 MySQL MySQLi 代码中if语句来捕获错误 像这样 if database connection error hand
  • 如何减小我从 keras 转换的 .tflite 的大小

    我刚刚转换了一个Keras model h5 resnet50 img classify 在谷歌上创建COLAB to tflite但尺寸只是减小了0 5 MB 这是针对移动应用程序的 大小应该进一步减小 它大约有 90MB 对于生产来说太
  • 使用 jQuery 根据原始值修改每个文本字段的值

    是否可以使用 jQuery 或 JavaScript 根据原始值修改网页中存在的每个文本字段的值 例如 假设一个页面中有 50 个文本字段 我想删除每个文本字段值的开头和结尾的空格 我认为单独为每个文本字段调用该函数并不是一个好主意 如何在
  • PHP 中的 __call、__callStatic 和调用范围

    我最近读到有关在 PHP 中调用作用域和作用域解析运算符 的内容 有两种变体 实例调用和静态调用 考虑以下听力
  • sencha 中的按钮背景颜色

    我是 sencha touch 的新手 我们如何将按钮的背景颜色更改为白色 我有一个按钮 每个角都有两个图像 我希望按钮是纯白色的 我尝试使用这样的CSS quest background url images quest jpg no r
  • 只允许在 JTextField 中输入数字和符号 (-)

    我正在尝试创建一个数学测验 我只希望用户能够输入数字 无论它们是负数还是正数 有什么办法可以做到吗 我曾考虑过使用正则表达式 但听说它们不好用 我尝试使用按键侦听器 但是如果用户粘贴怎么办 我尝试解析字符串以获取整数 但负号将不起作用 有任
  • 如何在 VB.NET 中使用 RhinoMocks 设置只读属性的返回值?

    我在 VB NET 中使用 RhinoMock 需要设置只读列表的返回值 这就是我的want要做 但不起作用 dim s Rhino Mocks MockRepository GenerateStub of IUserDto s Id gu
  • 如何在不启用USB调试的情况下使用adb tcpip?

    我已经阅读了很多关于 adb 和 tcpip 模式的文章 并且我可以创建无线 adb 连接 但前提是打开 USB 调试 我使用它的方式是这样的 USB调试已启用 call adb tcpip在计算机上 从 USB 切换到 tcpip 模式
  • 如何在Windows后台持续运行Python脚本?

    我创建了一个脚本 将文件从一个文件夹移动到另一个文件夹 但由于原始文件夹是下载文件夹 我需要它始终在后台运行 我还有一个标准批处理文件 如下所示 py C Python Scripts moveDLs py 我在用着Windows 10 我
  • 在soap标头中添加wsse:UsernameToken

    我正在开发 SOAP 客户端 我的 WSDL URL 是http localhost 8080 soap getMessage wsdl 这需要以下标头来指定用户名和密码
  • 句子分类(Categorization)

    我一直在阅读有关文本分类的内容 并找到了几个可用于分类的Java工具 但我仍然想知道 文本分类与句子分类相同吗 有没有专注于句子分类的工具 文本分类 和 句子分类 之间没有正式的区别 毕竟 句子是一种文本 但一般来说 当人们谈论文本分类时
  • mediaelement.js 同一页面上有多个视频?

    我试图将多个视频放在一个页面上 但是当我单击一个视频进行播放时 它们都会播放吗 还有其他人经历过吗 这是我使用的代码片段 video audio mediaelementplayer success function player node
  • 将每周时间系列扩展到每日

    我有一个每周值的 xts 时间序列 Jan 4 2004 0 99 Jan 11 2004 1 11 Jan 18 2004 1 06 我想将其转换为每日值 Jan 4 2004 0 99 Jan 5 2004 0 99 Jan 6 200
  • Windows Phone 8.1 与 Windows Phone Silverlight 8.1 - MSDN 上是否缺少文档?

    我正在尝试将一些 NET 代码移植到 Windows Phone 8 1 不是 Silverlight 库 并且已经用头撞墙一段时间了 现在试图理解为什么System Net IPAddress不可用 根据Windows Phone MSD
  • 线程“main”中的异常 java.lang.NoSuchMethodError: scala.Predef$.refArrayOps( [重复]

    这个问题在这里已经有答案了 我是 scala 新手 INTELLIJ 中的代码出现以下错误 任何人都可以帮助解决它 import org apache spark SparkContext SparkConf object wordcoun
  • 将 R 代码转换为 C 代码

    出于速度原因以及将其打包为 exe 的能力 我正在考虑将 R 脚本转换为 C 代码 我是 C 新手 我的问题是用 C 语言会明显更快吗 速率限制步骤是一种必须对大向量多次应用的排序算法 我不确定 R 中的矢量化功能是否会对此有所帮助或减慢速
  • 如何计算二维对数色度?

    我的目标是去除图像中的阴影 我使用 C 和 OpenCV 当然 我缺乏足够的数学背景 而且不是以英语为母语 这让一切变得更难理解 在阅读了消除阴影的不同方法后 我发现了应该对我有用的方法 但它依赖于他们所谓的 二维色度 and 二维对数色度