Unity 3D : 10~16bit RAW 圖像轉 8bit 圖像

本文介绍了一款用于将10位RAW图像数据转换为8位RAW格式的C#程序。此程序适用于需要在Unity3D或图像处理中使用8位RAW数据的特殊场景,通过算法将10位数据压缩至8位,同时尽量保持图像质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言 :

這段程式碼可以把 10bit, 12bit, 14bit, 16bit 轉成 8bit。

用途就不用我說明了,我想大家都知道,雖然我覺得會做 Unity 3D 的人估計沒啥人會看我這篇文章哈。

這是給特殊需求的人使用的,例如我…。

效果圖 :

左邊是 10bit RAW,右邊是經過我的程式轉成 8bit RAW 的結果圖。人眼估計很難看出差別,但是在做一些圖像處理或拉增益時,10 bit 通常會比 8 bit 好很多。

在这里插入图片描述

C# 程式碼 :

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

public class RAW10_To_RAW8 : MonoBehaviour
{
    void Start()
    {
        string input_path = "C:/1335/RAW/10bit.raw"; // 輸入路徑 ( 10 bit )

        string output_path = "C:/1335/RAW/8bit.raw"; // 保存路徑 ( 8 bit )

        byte[] b10 = File.ReadAllBytes(input_path);

        byte [] b8 = raw10_to_raw8(b10);

        File.WriteAllBytes(output_path, b8);
    }


    byte[] raw10_to_raw8(byte[] b10)
    {
        byte[] b8 = new byte[b10.Length / 2];

        for (int i = 0, k = 0; i < b8.Length; i++, k += 2)
        {
            byte L = b10[k + 0];
            byte H = b10[k + 1];
            b8[i] = (byte)((H << 8 | L) / 4);
        }

        return b8;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值