Index: trunk/ppSim/src/ppSimCreate.c
===================================================================
--- trunk/ppSim/src/ppSimCreate.c	(revision 14657)
+++ trunk/ppSim/src/ppSimCreate.c	(revision 14667)
@@ -9,10 +9,26 @@
 pmFPAfile *ppSimCreate(pmConfig *config)
 {
+    bool status;
+    bool simImage = false;
     PS_ASSERT_PTR_NON_NULL(config, NULL);
+    pmFPA *fpa = NULL;
 
-    pmFPA *fpa = pmFPAConstruct(config->camera); // FPA to contain the observation
-    if (!fpa) {
-        psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to construct an FPA from camera configuration.");
-        return NULL;
+    // the input image defines the camera.  if it is not supplied, the user must have
+    // supplied a camera and other metadata on the command line
+    pmFPAfile *input = pmFPAfileDefineFromArgs (&status, config, "PPIMAGE.INPUT", "INPUT");
+    if (!input) {
+	simImage = true;
+	fpa = pmFPAConstruct(config->camera); // FPA to contain the observation
+	if (!fpa) {
+	    psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to construct an FPA from camera configuration.");
+	    return NULL;
+	}
+    } else {
+	simImage = false;
+	if (input->type != PM_FPA_FILE_IMAGE) {
+	    psError(PS_ERR_IO, true, "PPIMAGE.INPUT is not of type IMAGE");
+	    return NULL;
+	}
+	fpa = input->fpa;
     }
 
@@ -56,4 +72,9 @@
     }
     simSources->save = true;
+
+    // if we have loaded an input image, we do not need to populate the fpa
+    if (!simImage) {
+	return file;
+    }
 
     pmFPALevel phuLevel = pmFPAPHULevel(file->format); // Level at which PHU goes
