コード例 #1
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("filepath",
                        type=str,
                        help="raw image file path (of IMX250MZR)")
    args = parser.parse_args()
    filepath = args.filepath

    # Read and Demosaicing image
    img_raw = cv2.imread(filepath, -1)
    img_demosaiced = pa.IMX250MZR.demosaicing(img_raw)

    # Calculate Stokes vector
    radians = np.array([0, np.pi / 4, np.pi / 2, np.pi * 3 / 4])
    img_stokes = pa.calcStokes(img_demosaiced, radians)

    # Convert Stokes vector to DoLP and AoLP
    img_DoLP = pa.cvtStokesToDoLP(img_stokes)  # 0~1
    img_AoLP = pa.cvtStokesToAoLP(img_stokes)  # 0~pi

    name, ext = os.path.splitext(filepath)

    # Apply the HSV color map on the AoLP image
    img_AoLP_color = pa.applyColorToAoLP(img_AoLP)
    cv2.imwrite(name + "_AoLP" + ".png", img_AoLP_color)

    # Set saturation to DoLP
    # As a result, the image is lighter and has color only at the polarized area
    img_AoLP_light = pa.applyColorToAoLP(img_AoLP, saturation=img_DoLP)
    cv2.imwrite(name + "_AoLP_light" + ".png", img_AoLP_light)

    # Set value to DoLP
    # As a result, the image is darker and has color only at the polarized area
    img_AoLP_dark = pa.applyColorToAoLP(img_AoLP, value=img_DoLP)
    cv2.imwrite(name + "_AoLP_dark" + ".png", img_AoLP_dark)
コード例 #2
0
def main():
    # Read and Demosaicing image
    filepath = "dataset/dragon.png"
    img_raw = cv2.imread(filepath, 0)
    img_demosaiced = pa.demosaicing(img_raw)

    # Calculate Stokes vector
    radians = np.array([0, np.pi/4, np.pi/2, np.pi*3/4])
    img_stokes = pa.calcStokes(img_demosaiced, radians)

    # Convert Stokes vector to DoLP and AoLP
    img_DoLP = pa.cvtStokesToDoLP(img_stokes) # 0~1
    img_AoLP = pa.cvtStokesToAoLP(img_stokes) # 0~pi

    name, ext = os.path.splitext(filepath)
    
    # Apply the HSV color map on the AoLP image
    img_AoLP_color = pa.applyColorToAoLP(img_AoLP)
    cv2.imwrite(name+"_AoLP"+".png", img_AoLP_color)
    
    # Set saturation to DoLP
    # As a result, the image is lighter and has color only at the polarized area
    img_AoLP_light = pa.applyColorToAoLP(img_AoLP, saturation=img_DoLP)
    cv2.imwrite(name+"_AoLP_saturation"+".png", img_AoLP_light)
    
    # Set value to DoLP
    # As a result, the image is darker and has color only at the polarized area
    img_AoLP_dark = pa.applyColorToAoLP(img_AoLP, value=img_DoLP)
    cv2.imwrite(name+"_AoLP_value"+".png", img_AoLP_dark)
コード例 #3
0
ファイル: stokes.py プロジェクト: YatSenMeng/polanalyser
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("filepath",
                        type=str,
                        help="raw image file path (of IMX250MZR)")
    args = parser.parse_args()
    filepath = args.filepath

    # Read and Demosaicing image
    img_raw = cv2.imread(filepath, -1)
    img_demosaiced = pa.IMX250MZR.demosaicing(img_raw)

    # Calculate Stokes vector
    radians = np.array([0, np.pi / 4, np.pi / 2, np.pi * 3 / 4])
    img_stokes = pa.calcStokes(img_demosaiced, radians)

    # Decomposition into 3 components (S0, S1, S2)
    img_S0, img_S1, img_S2 = cv2.split(img_stokes)

    # Convert Stokes vector to meaningful values
    img_intensity = img_S0 / 2
    img_Imax = pa.cvtStokesToImax(img_stokes)
    img_Imin = pa.cvtStokesToImin(img_stokes)
    img_DoLP = pa.cvtStokesToDoLP(img_stokes)  # 0~1
    img_AoLP = pa.cvtStokesToAoLP(img_stokes)  # 0~pi

    # Normarize and Save image
    name, ext = os.path.splitext(filepath)
    dtype_raw = img_raw.dtype

    img_intensity_norm = normarize(img_intensity, dtype_raw)
    cv2.imwrite(name + "_intensity" + ext, img_intensity_norm)

    img_Imax_norm = normarize(img_Imax, dtype_raw)
    cv2.imwrite(name + "_Imax" + ext, img_Imax_norm)

    img_Imin_norm = normarize(img_Imin, dtype_raw)
    cv2.imwrite(name + "_Imin" + ext, img_Imin_norm)

    img_DoLP_norm = normarize(img_DoLP * 255, np.uint8, gamma=1.0)
    cv2.imwrite(name + "_DoLP" + ".png", img_DoLP_norm)

    img_AoLP_color = pa.applyColorToAoLP(img_AoLP)  # apply pseudo-color
    cv2.imwrite(name + "_AoLP" + ".png", img_AoLP_color)
コード例 #4
0
def pol2color(image):

    img_demosaiced = pa.demosaicing(image)

    # Calculate the Stokes vector per-pixel
    angles = np.deg2rad([0, 45, 90, 135])
    img_stokes = pa.calcStokes(img_demosaiced, angles)

    # Decompose the Stokes vector into its components
    img_S0, img_S1, img_S2 = cv2.split(img_stokes)

    # Convert the Stokes vector to Intensity, DoLP and AoLP
    img_intensity = pa.cvtStokesToIntensity(img_stokes)
    img_DoLP = pa.cvtStokesToDoLP(img_stokes)
    img_AoLP = pa.cvtStokesToAoLP(img_stokes)

    # https://github.com/elerac/polanalyser/wiki/How-to-Visualizing-the-AoLP-Image
    # img_AoLP_cmapped = pa.applyColorToAoLP(img_AoLP, value=img_DoLP)
    img_AoLP_cmapped = pa.applyColorToAoLP(img_AoLP, saturation=img_DoLP)

    return img_AoLP_cmapped
コード例 #5
0
ファイル: stokes.py プロジェクト: twd-sky/polanalyser
def main():
    # Read image and demosaicing
    filepath = "dataset/dragon.png"
    img_raw = cv2.imread(filepath, 0)
    img_demosaiced = pa.demosaicing(img_raw)

    # Calculate the Stokes vector per-pixel
    radians = np.array([0, np.pi / 4, np.pi / 2, np.pi * 3 / 4])
    img_stokes = pa.calcStokes(img_demosaiced, radians)

    # Decomposition into 3 components (S0, S1, S2)
    img_S0, img_S1, img_S2 = cv2.split(img_stokes)

    # Convert Stokes vector to meaningful values
    img_intensity = pa.cvtStokesToIntensity(img_stokes)
    img_Imax = pa.cvtStokesToImax(img_stokes)
    img_Imin = pa.cvtStokesToImin(img_stokes)
    img_DoLP = pa.cvtStokesToDoLP(img_stokes)  # 0~1
    img_AoLP = pa.cvtStokesToAoLP(img_stokes)  # 0~pi

    # Normarize and save images
    name, ext = os.path.splitext(filepath)
    dtype_raw = img_raw.dtype

    img_intensity_norm = normarize(img_intensity, dtype_raw)
    cv2.imwrite(name + "_intensity" + ext, img_intensity_norm)

    img_Imax_norm = normarize(img_Imax, dtype_raw)
    cv2.imwrite(name + "_Imax" + ext, img_Imax_norm)

    img_Imin_norm = normarize(img_Imin, dtype_raw)
    cv2.imwrite(name + "_Imin" + ext, img_Imin_norm)

    img_DoLP_norm = normarize(img_DoLP * 255, np.uint8, gamma=1.0)
    cv2.imwrite(name + "_DoLP" + ".png", img_DoLP_norm)

    img_AoLP_color = pa.applyColorToAoLP(img_AoLP)  # apply pseudo-color
    cv2.imwrite(name + "_AoLP" + ".png", img_AoLP_color)
コード例 #6
0
img_000, img_045, img_090, img_135 = cv2.split(img_demosaiced)

plt.imshow(img_000)

# Calculate the Stokes vector per-pixel
radians = np.array([0, np.pi / 4, np.pi / 2, np.pi * 3 / 4])
img_stokes = pa.calcStokes(img_demosaiced, radians)

plt.imshow(img_stokes)

# Decompose the Stokes vector into its components
img_S0, img_S1, img_S2 = cv2.split(img_stokes)

# Convert the Stokes vector to Intensity, DoLP and AoLP
img_intensity = pa.cvtStokesToIntensity(img_stokes)
img_DoLP = pa.cvtStokesToDoLP(img_stokes)
img_AoLP = pa.cvtStokesToAoLP(img_stokes)

plt.imshow(img_intensity)
plt.imshow(img_DoLP, cmap='jet', vmin=0, vmax=1)
plt.imshow(img_AoLP, cmap='hsv')

img_AoLP_cmapped = pa.applyColorToAoLP(img_AoLP, value=img_DoLP)

plt.imshow(img_AoLP_cmapped)

img_DoLP_col = cm.jet(img_DoLP)
plt.imshow(img_DoLP_col.astype(np.float64))

img_AoLP_col = cm.hsv(img_AoLP / np.pi)
plt.imshow(img_AoLP_col.astype(np.float64))