Esempio n. 1
0
from photometric_stereo import photometric_stereo as ps

ground_truth_normals, ground_truth_albedo = ps(warped_ground_truth_image, lights)

# <codecell>

from pybug.image import MaskedNDImage
from scipy.ndimage.filters import gaussian_filter, median_filter
from geometric_sfs import geometric_sfs as sfs, worthington_hancock_sfs
from mapping import AEP, PGA, Spherical, ImageMapper, IdentityMapper

# mapping_object = ImageMapper(PGA(intrinsic_mean_normals.as_vector(keep_channels=True)))
mapping_object = ImageMapper(Spherical())

warped_intensity_image = MaskedNDImage(warped_intensity_image.pixels.copy(), mask=warped_intensity_image.mask)
mean_normals_image = warped_intensity_image.from_vector(mean_normals, n_channels=3)
# Normalise the image so that it has unit albedo?
warped_intensity_image.masked_pixels /= ground_truth_albedo.masked_pixels
# warped_intensity_image.masked_pixels /= np.max(warped_intensity_image.masked_pixels)
worthington = worthington_hancock_sfs(warped_intensity_image, mean_normals_image, estimate_light, n_iters=40)

# <codecell>

# from geometric_sfs import horn_brooks
# reconstructed_normals_horn = horn_brooks(warped_intensity_image, mean_normals, normal_model, estimate_light, n_iters=100, c_lambda=10, mapping_object=mapping_object)

# <codecell>

from pybug.visualize.viewmayavi import MayaviVectorViewer3d
from pybug.image import DepthImage, RGBImage
Esempio n. 2
0
        mean_normals = model['mean_normals']
        reference_frame = model['template']
        try:
            intrinsic_mean_normals = model['intrinsic_mean_normals']
        except Exception:
            intrinsic_mean_normals = None

        # Estimate light direction for image
        I = intensity_image.as_vector()
        estimate_light = np.dot(pinv2(mean_normals), I)
        print estimate_light

        # Perform SFS
        warped_intensity_image = MaskedNDImage(intensity_image.pixels.copy(),
                                               mask=intensity_image.mask)
        initial_estimate_image = warped_intensity_image.from_vector(
            mean_normals.copy(), n_channels=3)

        mapping_object = build_mapping_object(feature_space,
                                              initial_estimate_image,
                                              intrinsic_mean_normals)
        # Normalise the image so that it has unit albedo?
        #warped_intensity_image.masked_pixels /= ground_truth_albedo.masked_pixels
        #warped_intensity_image.masked_pixels /= np.max(warped_intensity_image.masked_pixels)
        reconstructed_normals = sfs(warped_intensity_image,
                                    initial_estimate_image, normal_model,
                                    estimate_light, n_iters=200,
                                    mapping_object=mapping_object)

        normals[subject_id][feature_space] = reconstructed_normals

        #reconstructed_depth = frankotchellappa(
Esempio n. 3
0
        with open(model_path, 'rb') as f:
            model = cPickle.load(f)

        normal_model = model['appearance_model']
        reference_frame = model['template']
        mean_normals = model['mean_normals']
        reference_frame = model['template']
        try:
            intrinsic_mean_normals = model['intrinsic_mean_normals']
        except Exception:
            intrinsic_mean_normals = None

        # Perform SFS
        warped_intensity_image = MaskedNDImage(intensity_image.pixels.copy(),
                                               mask=intensity_image.mask)
        initial_estimate_image = warped_intensity_image.from_vector(
            mean_normals.copy(), n_channels=3)

        mapping_object = build_mapping_object(feature_space,
                                              initial_estimate_image,
                                              intrinsic_mean_normals)
        # Normalise the image so that it has unit albedo
        #warped_intensity_image.masked_pixels /= ground_truth_albedo.masked_pixels
        #warped_intensity_image.masked_pixels = \
        #    ((warped_intensity_image.masked_pixels - np.nanmin(warped_intensity_image.masked_pixels)) /
        #     (np.nanmax(warped_intensity_image.masked_pixels) - np.nanmin(warped_intensity_image.masked_pixels)))
        reconstructed_normals = sfs(warped_intensity_image,
                                    initial_estimate_image,
                                    normal_model,
                                    sfs_light, n_iters=50,
                                    mapping_object=mapping_object)
        normals[subject_id][feature_space] = reconstructed_normals
Esempio n. 4
0
ground_truth_normals, ground_truth_albedo = ps(warped_ground_truth_image,
                                               lights)

# <codecell>

from pybug.image import MaskedNDImage
from scipy.ndimage.filters import gaussian_filter, median_filter
from geometric_sfs import geometric_sfs as sfs, worthington_hancock_sfs
from mapping import AEP, PGA, Spherical, ImageMapper, IdentityMapper
# mapping_object = ImageMapper(PGA(intrinsic_mean_normals.as_vector(keep_channels=True)))
mapping_object = ImageMapper(Spherical())

warped_intensity_image = MaskedNDImage(warped_intensity_image.pixels.copy(),
                                       mask=warped_intensity_image.mask)
mean_normals_image = warped_intensity_image.from_vector(mean_normals,
                                                        n_channels=3)
# Normalise the image so that it has unit albedo?
warped_intensity_image.masked_pixels /= ground_truth_albedo.masked_pixels
# warped_intensity_image.masked_pixels /= np.max(warped_intensity_image.masked_pixels)
worthington = worthington_hancock_sfs(warped_intensity_image,
                                      mean_normals_image,
                                      estimate_light,
                                      n_iters=40)

# <codecell>

# from geometric_sfs import horn_brooks
# reconstructed_normals_horn = horn_brooks(warped_intensity_image, mean_normals, normal_model, estimate_light, n_iters=100, c_lambda=10, mapping_object=mapping_object)

# <codecell>