主要内容

makehdr

创建高动态范围图像

描述

实例

HDR.=makehdr(文件夹)创建单精度高动态范围(HDR)图像HDR.从中的一组空间注册的低动态范围(LDR)图像文件夹.

HDR.=makehdr(imds)创建单精度、高动态范围图像HDR.从存储为的空间注册的LDR图像集图像数据存储对象imds.

实例

HDR.=makehdr(___,名称,价值)使用名称 - 值对来控制除了从前一个语法中的任何一个语法中的输入参数之外还可以控制图像创建的各个方面。

笔记

输入图像文件必须包含可交换图像文件格式(EXIF)曝光元数据。makehdr使用最亮和最暗图像之间的中间曝光作为HDR计算的基础曝光。此值不需要出现在任何特定文件中。有关计算此中间曝光值的详细信息,请参阅算法.

实例

HDR.=makehdr(图片,名称,价值)创建单精度HDR图像HDR.从存储在单元阵列中的空间注册LDR图像集图片。使用名称-值对指定输入单元格数组中图像的曝光值'曝光价值'“相对暴露”.

笔记

当输入是LDR图像的单元格数组时,必须指定曝光或相对曝光值作为第二个输入参数。要指定曝光值,请使用名称-值对'曝光价值'.要指定相对曝光值,请使用名称值对“相对暴露”.

例子

全部收缩

从一组低动态范围(LDR)图像创建高动态范围(HDR)图像,这些图像共享相同的f-stop,但具有不同的曝光时间。

将六个低动态范围图像加载到工作区中。创建各自曝光时间的矢量。将图像显示为蒙太奇。

文件={'office_1.jpg',‘office_2.jpg’,‘office_3.jpg’,...'Office_4.jpg',“office_5.jpg”,'Office_6.jpg'};exptimes = [0.0333 0.1000 0.3333 0.6250 1.3000 4.0000];蒙太奇(文件)

Figure包含axes对象。axes对象包含image类型的对象。

将LDR图像合并为HDR图像。

hdr=makehdr(文件,“相对暴露”,expTimes./expTimes(1));

显示HDR图像。

rgb=色调贴图(hdr);图像显示(rgb)

Figure包含axes对象。axes对象包含image类型的对象。

从共享相同F-STOP的一组六个低动态范围(LDR)图像中,创建一个高动态范围(HDR)图像,但具有不同的曝光时间。估计的相机响应函数值是从这些LDR图像计算的,并用于生成HDR图像。

将六幅空间注册的LDR图像读入工作区。创建一个ImageageAtastore.包含这些图像的对象。将图像显示为蒙太奇。

setDir=fullfile(toolboxdir(“图像”),“imdata”,“办公室*); imds=图像数据存储(setDir);蒙太奇(imds)

Figure包含axes对象。axes对象包含image类型的对象。

根据数据存储中的图像估计摄像机响应函数。

crf = camresponse(IMDS);

通过使用估计的相机响应函数值将LDR图像与HDR图像组合成HDR图像。

HDR = Makehdr(IMDS,'cameraresponse',通用报告格式);

显示HDR图像。

rgb=色调贴图(hdr);图像显示(rgb)

Figure包含axes对象。axes对象包含image类型的对象。

从相同的F-STOP的低动态范围(LDR)图像的单元格阵列中创建一个高动态范围(HDR)图像,但具有不同的曝光时间。

在工作区中读取六个低动态范围图像。

image1=imread('office_1.jpg'); 图像2=imread(‘office_2.jpg’); 图像3=imread(‘office_3.jpg’);图像4=imread('Office_4.jpg');image5 = imread(“office_5.jpg”);image6 = imread('Office_6.jpg');

使用单元格构造操作在工作区中创建LDR图像的单元格阵列,{ }.

图像={image1,image2,image3,image4,image5,image6};

将图像显示为蒙太奇。

蒙太奇(图像)

Figure包含axes对象。axes对象包含image类型的对象。

为输入单元格数组中的每个LDR图像指定曝光值。

暴露=[0.0333 0.1000 0.3333 0.6250 1.3000 4.0000];

计算相对于输入单元阵列中第一个LDR图像的曝光值的相对曝光值。

再暴露=暴露/暴露(1);

将LDR图像合并为HDR图像。指定单元格阵列中每个图像的相对曝光值。

hdr=生成hdr(图像,“相对暴露”,再暴露);

显示HDR图像。

rgb=色调贴图(hdr);图像显示(rgb)

Figure包含axes对象。axes对象包含image类型的对象。

输入参数

全部收缩

空间注册的LDR图像集,指定为字符串数组或字符向量的单元格数组。这些图像可以是任何位深度的颜色或灰度。但是,LDR图像的首选位深度为8或16。

数据类型:char|一串|细胞

一套空间注册的LDR图像,指定为图像数据存储目的。这些图像可以是任何位深度的颜色或灰度。但是,LDR图像的优选比特深度为8或16。

空间注册的LDR图像集,指定为单元阵列。这些图像可以是任何位深度的颜色或灰度。但是,LDR图像的首选位深度为8或16。

名称值参数

指定可选的逗号分离对名称,价值论点。名称是参数名称和价值是对应的值。名称必须出现在引号内。您可以以任何顺序指定多个名称和值对参数名称1,值1,…,名称,值.

例子:MakeHDR(文件,'ReallingExpmens',[0.1 0.3 0.4]);

用作基本曝光的文件名称,指定为字符串标量或字符向量。

数据类型:char|一串

笔记

  • 您只能使用以下选项之一:'basefile','曝光价值', 和“相对暴露”一次名称 - 值对。

  • 你不得指定'basefile'名称-值对,当输入是空间注册的LDR图像的单元数组时。

输入集中每个图像的曝光值,指定为正值的数字向量K向量中的th元素对应于K输入集中的第个LDR图像。增加一个曝光值(EV)对应于曝光翻倍。减少一个EV对应于曝光减半。如果指定此参数,该函数将覆盖EXIF曝光元数据。

数据类型:仅有一个的|双倍的

输入集中的每个图像的相对曝光值,指定为正值的数值矢量。这个K向量中的th元素对应于K在输入集中的LDR图像。

例如,具有0.5的相对曝光(RE)值的图像具有与具有重新值为1的图像的一半。类似地,具有Re值为3的图像具有三倍的图像与图像曝光重新值为1.如果指定此参数,则该函数将覆盖EXIF曝光元数据。

数据类型:仅有一个的|双倍的

正确曝光的最小值,指定为正整数。对于每个LDR图像,值小于此最小值的像素被视为曝光不足,不构成最终HDR图像。默认情况下,此最小值设置为图像数据类型允许的最大强度的2%。

数据类型:仅有一个的|双倍的

最大正确暴露的值,指定为正整数。对于每个LDR图像,具有比该最大值更大的像素被认为是过度曝光的,并且不会有助于最终的HDR图像。默认情况下,此最大值设置为图像数据类型允许的最大强度的98%。

数据类型:仅有一个的|双倍的

摄像头响应功能,指定为N-灰度图像的by-1矢量和N-彩色图像的by-3矩阵。相机响应函数将对数曝光值(场景辐射度)映射到输入图像的强度级别N是2钻头深度。例如,如果输入图像集的位深度为8,则N是256。

笔记

这个'timpormlimit''Minumplimit'当发生错误时,将忽略名称-值对'cameraresponse'指定了。

数据类型:仅有一个的|双倍的

输出参数

全部收缩

高动态范围图像,作为M-经过-N-B-3数字数组。

数据类型:仅有一个的

算法

这个makehdr功能通过使用输入图像的曝光值(EV)来计算中间曝光值。基于光圈和快门速度来计算每个图像的曝光值。光圈和快门速度值存储在该输入文件的EXIF元数据中或使用该输入文件的EXIF元数据中'曝光价值'名称-值对。中间EV作为最高和最低EV的平均值计算,并用作基本曝光。

工具书类

[1] Reinhard等人。高动态范围成像2006。4.

[2] Debevec,P.E.和J.Malik,“从照片中恢复高动态范围辐射图”,摘自ACM SIGGRAPH2008课程,第31号第31号。纽约,纽约:ACM,2008。

2008年推出