标签: raw

如何将白平衡系数应用于 sRGB 输出的 RAW 图像

我想将 RAW 图像数据 (RGGB) 转换为 sRGB 图像。有许多专门的方法可以做到这一点,但首先要了解基础知识,我已经实现了一些简单的算法,例如通过降低分辨率进行去拜耳化。我目前的管道是:

  • 通过重新调节U16输入数据的黑whitelevel
  • 应用白平衡系数
  • 尺寸减小的 Debayer,G 的平均值:g=((g0+g1)/2)
  • 计算 D65 光源 XYZ_TO_CAM 的伪逆(来自 Adob​​e DNG)
  • 通过 CAM_TO_XYZ 将 debayered RGB 数据转换为 XYZ
  • 将 XYZ 转换为 D65 sRGB(取自 Bruce Lindbloom 的矩阵)
  • 应用伽马校正(目前简单的例程,应替换为 sRGB 伽马)
  • 从 [minval..maxval] 重新缩放到 [0..1] 并将 f32 转换为 u16
  • 另存为 tiff

问题是,如果我跳过白平衡系数乘法(或者只是用 1.0 替换它们),输出图像看起来已经可以接受了。如果我应用系数(取自 DNG 中的 AsShot),则输出会产生巨大的色偏。而且我不确定我是否必须乘以coef1/coef

第一个图像是 wb_coefs 设置为 1.0 的管道的结果。

在此处输入图片说明

第二个图像是“正确”wb_coefs 的结果。

在此处输入图片说明

我的管道有什么问题?

补充问题:

  • 我不确定重新缩放过程。我是否必须在每一步后重新调整为 [0..1] 或者在 u16 转换期间作为最后阶段重新调整是否足够?

完整代码:


macro_rules! max {
  ($x: expr) …
Run Code Online (Sandbox Code Playgroud)

rgb image image-processing rust raw

6
推荐指数
1
解决办法
112
查看次数

Gatsby 内容丰富的嵌入图像

正如我所看到的,当仅查询 contentfulBlogPost 原始数据时,不再有 json 选项。我能够进行一些更改以获取身体中的所有内容,除了该帖子中的图像。

如果我在 GraphQL Playground 中进行测试,我可以获得图像 id 和 url,但仅此而已。

query {
  allContentfulAsset {
    edges {
      node {
        id
        file {
          url
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我试图找到一个如何获取嵌入图像的示例,但没有运气......

import React from 'react'
import { graphql } from 'gatsby'
import { documentToReactComponents } from '@contentful/rich-text-react-renderer'

import Layout from '../components/layout'


export const query = graphql`
  query($slug: String!) {
    contentfulBlogPost(slug: {eq: $slug}) {
      title
      publishedDate(formatString: "MMMM Do, YYYY")
      body {
        raw 
      }
    }
    allContentfulAsset {
      edges {
        node {
          id
          file …
Run Code Online (Sandbox Code Playgroud)

contentful graphql gatsby gatsby-image raw

6
推荐指数
2
解决办法
1191
查看次数

您能否将表示 RDS 文件的 R 原始向量转换回 R 对象,而无需往返磁盘?

我有一个已上传的 RDS 文件,然后通过curl::curl_fetch_memory()(via httr) 下载 - 这为我提供了 R 中的原始向量。

有没有办法读取表示 RDS 文件的原始向量以返回原始 R 对象?或者总是必须先将其写入磁盘?

我有一个类似于下面的设置:

saveRDS(mtcars, file = "obj.rds")
# upload the obj.rds file 
...
# download it again via httr::write_memory()
...

obj
#   [1] 1f 8b 08 00 00 00 00 00 00 03 ad 56 4f 4c 1c 55 18 1f ca 02 bb ec b2 5d 
# ...
is.raw(obj)
#[1] TRUE
Run Code Online (Sandbox Code Playgroud)

它似乎readRDS()应该用于解压缩它,但它需要一个连接对象,而且我不知道如何从 R 原始向量创建连接对象 -rawConnection()看起来很有希望,但给出了:

rawConnection(obj)
#A connection with                           
#description …
Run Code Online (Sandbox Code Playgroud)

r rcurl httr raw

4
推荐指数
1
解决办法
563
查看次数

如何在 Go 中获取键盘输入数据?

我希望能够判断用户是否按下了Ctrl+[something] 或EscGo 中的键盘。该程序在终端内的 Linux 环境中运行。

linux keyboard terminal go raw

3
推荐指数
1
解决办法
4042
查看次数

JWS 登录 java 和 typescript 不会产生相同的结果

我正在尝试使用 Deflater.class 对 Java 中的 JSON 字符串进行原始压缩。但是java和typescript生成的压缩结果有一些区别。

let bodyString = JSON.stringify(idTokenPayload);
const fields = deflate ? { zip: 'DEF' } : {};
const body = deflate ? pako.deflateRaw(bodyString) : bodyString;
Run Code Online (Sandbox Code Playgroud)

在爪哇,

protected String deflateAndBase64Encode(String jsonString) {
        try {

            ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
            Deflater deflater = new Deflater(Deflater.BEST_COMPRESSION, true);
            DeflaterOutputStream deflaterStream = new DeflaterOutputStream(bytesOut, deflater);
            deflaterStream.write(jsonString.getBytes());
            deflaterStream.finish();
            
            return Base64.getEncoder().encodeToString(bytesOut.toByteArray());
        } catch (IOException e) {
        }
        return "";
    }
Run Code Online (Sandbox Code Playgroud)

更新:

我需要按如下方式转换 JSON 有效负载以生成智能健康卡。Json Payload -> Minified JSON -> Raw deflate -> …

java deflate typescript pako raw

0
推荐指数
1
解决办法
122
查看次数