Как воспроизвести изображение, используя writeJPEG из среднего значения всех элементов вложенного массива в R

Объем переменной - это контекст, в котором он определен. По большей части все переменные PHP имеют только одну область. В эту единую область охвата включены и требуемые файлы. Например:

<?php
$a = 1;
include 'b.inc';
?>

Здесь переменная $a будет доступна в включенном скрипте b.inc. Однако в пользовательских функциях вводится локальная функция. Любая переменная, используемая внутри функции, по умолчанию ограничена областью локальных функций. Например:

<?php
$a = 1; /* global scope */ 

function test()
{ 
    echo $a; /* reference to local scope variable */ 
} 

test();
?>

Этот сценарий не будет выдавать какой-либо вывод, потому что оператор echo ссылается на локальную версию переменной $ a, и ей не присваивается значение в этой области. Вы можете заметить, что это немного отличается от языка C в том, что глобальные переменные в C автоматически доступны для функций, если они не переопределены локальным определением. Это может вызвать некоторые проблемы в том, что люди могут непреднамеренно изменить глобальную переменную. В PHP глобальные переменные должны быть объявлены глобальными внутри функции, если они будут использоваться в этой функции.

1
задан Adam Ralphus 24 March 2019 в 21:20
поделиться

1 ответ

Краткий ответ: writeJPEG() нужна матрица значений от 0 до 1. Вы предоставляете ей необработанные данные, значения которых находятся в диапазоне 0-255.

Подробно, приведенный вами пример (yalefaces.mat) имеет размеры:

> faces <- readMat("https://github.com/angelleng/545dump/blob/master/yalefaces.mat?raw=true")
> dim(faces[[1]])
[1]   48   42 2414

, так что на самом деле это 2414 граней размером 48x42. Мы можем отобразить один из них следующим образом:

> image(faces[[1]][,,1])

a face

Если вы усредните их (конечно, не пытаясь изменить размер массива):

> mean.all.faces <- apply(faces[[1]], 1:2, mean)
> image(mean.all.faces)

, кажется, работает нормально:

enter image description here

Но когда вы записываете это в JPEG, следующее даст мусор:

> writeJPEG(mean.all.faces, "BAD.jpg")

enter image description here

, в то время как следующие работы (хотя и немного темные):

> writeJPEG(mean.all.faces/255, "GOOD.jpg")

enter image description here

0
ответ дан K. A. Buhr 24 March 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: