当前位置: 首页 > news >正文

私人网站制作网站文件名优化

私人网站制作,网站文件名优化,网站备案 通知,网站设计对网站搜索引擎友好性的影响将sRGB格式的图片转换为BT.2020格式涉及到两个步骤:首先将sRGB转换到线性RGB,然后将线性RGB转换到BT.2020。这是因为sRGB图像通常使用伽马校正,而BT.2020工作在线性色彩空间中。 从sRGB到线性RGB:sRGB图像首先需要进行伽马校正解码…

将sRGB格式的图片转换为BT.2020格式涉及到两个步骤:首先将sRGB转换到线性RGB,然后将线性RGB转换到BT.2020。这是因为sRGB图像通常使用伽马校正,而BT.2020工作在线性色彩空间中。

  1. 从sRGB到线性RGB:sRGB图像首先需要进行伽马校正解码转换为线性RGB。这个过程通常不是通过一个简单的线性矩阵实现的,而是通过以下公式:

    [
    C_{linear} = \begin{cases}
    \frac{C_{sRGB}}{12.92}, & \text{if } C_{sRGB} \leq 0.04045 \
    \left(\frac{C_{sRGB} + 0.055}{1.055}\right)^{2.4}, & \text{otherwise}
    \end{cases}
    ]

    其中 (C_{linear}) 是线性RGB中的颜色分量值(红、绿、蓝),(C_{sRGB}) 是sRGB颜色空间中的对应分量值。

  2. 从线性RGB到BT.2020:接下来,您可以应用一个3x3的线性转换矩阵将线性RGB转换为BT.2020色彩空间。这个矩阵通常如下所示:

    [
    \begin{bmatrix}
    R_{BT.2020} \
    G_{BT.2020} \
    B_{BT.2020}
    \end{bmatrix}

    \begin{bmatrix}
    0.6274 & 0.3293 & 0.0433 \
    0.0691 & 0.9195 & 0.0114 \
    0.0164 & 0.0880 & 0.8956
    \end{bmatrix}
    \cdot
    \begin{bmatrix}
    R_{linear} \
    G_{linear} \
    B_{linear}
    \end{bmatrix}
    ]

在实际应用中,你首先需要编写代码将sRGB图像转换为线性RGB,然后再应用上述矩阵进行色彩空间的转换。以下是使用OpenCV在C++中实现这一过程的示例代码:
在这里插入图片描述

#include <opencv2/opencv.hpp>
#include <cmath>cv::Mat sRGBToLinearRGB(const cv::Mat& srgbImage) {cv::Mat linearRGB(srgbImage.size(), srgbImage.type());// cv::Vec3b,static_cast<uchar> 这2个要根据图片格式选择合适的值srgbImage.forEach<cv::Vec3b>([&](cv::Vec3b &pixel, const int * position) -> void {for (int i = 0; i < 3; ++i) {float c = pixel[i] / 255.0f;c = c <= 0.04045f ? c / 12.92f : std::pow((c + 0.055f) / 1.055f, 2.4f);linearRGB.at<cv::Vec3b>(position)[i] = static_cast<uchar>(std::round(c * 255.0f));}});return linearRGB;
}int main() {// 假设你已经有了一个sRGB格式的cv::Mat对象 srgbImagecv::Mat srgbImage; // 加载你的sRGB图像// 将sRGB转换为线性RGBcv::Mat linearRGB = sRGBToLinearRGB(srgbImage);// 定义从线性RGB到BT.2020的转换矩阵cv::Matx33f transformMatrix(0.6274, 0.3293, 0.0433,0.0691, 0.9195, 0.0114,0.0164, 0.0880, 0.8956);// 应用转换矩阵cv::Mat bt2020Image;cv::transform(linearRGB, bt2020Image, transformMatrix);// bt2020Image现在包含转换后的图像return 0;
}
 cv::Mat sRGBToLinearRGB(const cv::Mat& srgbImage) {cv::Mat linearRGB(srgbImage.size(), srgbImage.type());srgbImage.forEach<cv::Vec3f>([&](cv::Vec3f &pixel, const int * position) -> void {for (int i = 0; i < 3; ++i) {float c = pixel[i] / 255.0f;auto c2 = (c <= 0.04045f) ? (c / 12.92f) : std::pow((c + 0.055f) / 1.055f, 2.4f);auto val = static_cast<float>(std::round(c2 * 255.0f));qDebug() << QString("pixel[i] = %1, c1 = %2, c2 = %3, val = %4").arg(pixel[i]).arg(c).arg(c2).arg(val);linearRGB.at<cv::Vec3f>(position)[i] = val;}});return linearRGB;}cv::Mat Image_sRGB_BT2020(const cv::Mat &src){cv::Mat dst = src;// 确保使用浮点数src.convertTo(dst, CV_32F);// 将sRGB转换为线性RGBcv::Mat linearRGB = sRGBToLinearRGB(dst);// 定义从线性RGB到BT.2020的转换矩阵cv::Matx33f transformMatrix(0.6274, 0.3293, 0.0433,0.0691, 0.9195, 0.0114,0.0164, 0.0880, 0.8956);// 应用转换矩阵cv::Mat bt2020Image;cv::transform(linearRGB, bt2020Image, transformMatrix);return bt2020Image;}
http://www.yayakq.cn/news/624957/

相关文章:

  • 主办单位性质与网站名称不符泰安大众网
  • 收费下载网站源码村建站是什么部门
  • 视频素材交易网站建设网站建设实践试卷
  • 网站设计公司北京外贸展示企业网站
  • 做非法网站个人主页网站制作
  • 外贸公司网站搭建手机触屏网站开发教程
  • 上海人才引进网站关于化妆品网页设计的模板
  • 网站设计公司网站设计赞片cms
  • 免费网站收录设计师网上接私单app
  • 建设网站都需要准备什么材料wordpress文章字体插件
  • 石家庄做网站网络公司给一个公司做网站维护
  • 岗巴网站建设水头做网站的公司
  • 浙江做铁塔的公司网站网络科技一般经营什么
  • 汕头住房与城乡建设网站烟台H5网站设计公司
  • 网站建设多少钱 小江网页设计wordpress邮件发送 插件
  • 梅州建站怎么做设计师培训班怎么样
  • 淘宝了做网站卖什么好企业网站设计
  • 网站建设费用包括哪些内容网页制作网站开发
  • 温州市平阳县建设局网站如何加快网站收录
  • wordpress 多站点 404wordpress 4.5.3 下载
  • 茶叶网站模板wordpress 安装中文
  • 梧州网站推广外包服务做推广工具
  • 百度seo公司整站优化软件wordpress 中文版下载
  • canvas网站源码中国制造网内贸站
  • python网站开发环境wordpress头像上传
  • flash网站轮播广告怎么做发布会直播平台
  • 从化网站开发公司东营两学一做网站
  • 商丘做网站张wordpress主页加关键词
  • 如何用ps做创意视频网站网站建设公司网站模版
  • 房产网站建设网站备案资料