face2stdFace: Scale head proportions

View source: R/face2stdFace.R

face2stdFaceR Documentation

Scale head proportions

Description

The heads of the participants are of different sizes. This function rescales the x/y values according to a standardized face. The standardized face is of height 1 and width 1, while the pupil-pupil distance is defined as 1/3 and the left-pupil – left-mouth-corner distance is defined as 1/3. Accordingly, for resizing the x-axis, the distance between the pupils of the subject is used. For resizing the y-axis, the distance between the left pupil and the left mouthcorner is used. Optionally, the distance between the mouthcorners for the x-axis, and the distance between the right pupil and the right mouthcorner for the y-axis may be provided in addition. If provided, a mean of both measures is computed. Be aware that if you previously rescaled the data into millimeter by the function bu2mm, you also have to rescale the scaling parameters e.g., the pupil-pupil distance into millimeter first and use the millimeter values as scaling parameters!

Usage

face2stdFace(
  data,
  colNames,
  colNameSubj,
  pupilDist,
  leftPMDist,
  mouthcornerDist = NA,
  rightPMDist = NA,
  verbose = FALSE
)

Arguments

data

Data frame containig the columns which should be rescaled. Remaining colums will be returned unchanged (e.g., the z-values because no information for rescaling is available).

colNames

Character vector with names of the columns which should be rescaled. To differ between x-, and y-axis scaling, the variable names containing horizontal movement (left-right) should end with '_x', whereas variable names containing vertical movement (up-down) should end with '_y'.

colNameSubj

Character vector with a single value containig the name of the subject column of the data data-frame.

pupilDist

Numeric vector of measurement of the distance from left to right pupil for each subject, measured in blender units. This vector is used to rescale the x-axis.

leftPMDist

Numeric vector of measuremet of the distance from left pupil to left mouthcorner for each subject, measured in blender units. This vector is used to rescale the y-axis.

mouthcornerDist

Optional numeric vector of measurement of the distance from left to right mouthcorner for each subject measured in blender units. If provided, a mean of pupilDist and mouthcornerDist is used for rescaling the x-axis.

rightPMDist

Optional numeric vector of measurement of the distance from right pupil to right mouthcorner for each subject, measured in blender units. If provided, a mean of leftPMDist and rightPMDist is used for rescaling the y-axis.

verbose

Logical value. If TRUE, the function provides verbose console output.

Value

Data frame with columns rescaled to a standard face.

Author(s)

Axel Zinkernagel zinkernagel@uni-wuppertal.de, Rainer Alexandrowicz rainer.alexandrowicz@aau.at

Examples

# Load the file "Blender_Scalingdata.csv"
scaledata <- read.csv(system.file("extdata", "Blender_Scalingdata.csv", 
                      package = "blenderFace"), header = TRUE, sep =",")
# Make sure to have the data sorted by subjects
scaledata <- scaledata[with(scaledata, order(scaledata$subject)), ]

# Determin the dataframe columns which should be scaled:
names(rawdata)
# -> Frame, Stimulustype, subject and z-axis values should not be scaled 
# -> removed for variable colNames
colNames <- c("A7_x",  "A7_y",  "A8_x",  "A8_y",  
             "BL2_x", "BL2_y", "BL4_x", "BL4_y",  
             "BL5_x", "BL5_y", "BL7_x", "BL7_y",        
             "BR2_x", "BR2_y", "BR4_x", "BR4_y",  
             "BR5_x", "BR5_y", "BR7_x", "BR7_y",  
             "CL4_x", "CL4_y", "CL7_x", "CL7_y",        
             "CR4_x", "CR4_y", "CR7_x", "CR7_y",  
             "DL2_x", "DL2_y", "DR2_x", "DR2_y")

# To not overwrite existing data, use a new data frame 
# (dataStdF means data of standaradized faces)
dataStdF <- face2stdFace(data = rawdata, colNames = colNames, 
                         colNameSubj = "subject", pupilDist = scaledata$PupilPupilDistance, 
                         leftPMDist = scaledata$LeftPupilLeftMouthcornerDistance)

axzinker/blenderFace documentation built on Feb. 27, 2024, 10:25 a.m.