Loading Remove_Noise.py +69 −5 Original line number Original line Diff line number Diff line Loading @@ -7,13 +7,26 @@ from scipy.stats import multivariate_normal from skimage.restoration import wiener from skimage.restoration import wiener def setup_remote_sftpclient(): def setup_remote_sftpclient(): """ Setup the SFTP client Returns: sftp_client (paramiko.SFTPClient): the SFTP client """ client = paramiko.SSHClient() client = paramiko.SSHClient() client.load_system_host_keys() client.load_system_host_keys() client.connect("192.168.0.107", username="elphel") client.connect("192.168.0.107", username="elphel") sftp_client = client.open_sftp() sftp_client = client.open_sftp() return sftp_client return sftp_client def remove_noise(images, which_sensor): def create_average(images, which_sensor): """ Create an average image from a list of images Parameters: images (list): a list of images which_sensor (int): the sensor number Returns: average_image (np.array): the average image """ same_sensor_images = [] same_sensor_images = [] which_sensor = str(which_sensor) which_sensor = str(which_sensor) average_image = np.zeros_like(np.array(Image.open(images[0]))[1:]) average_image = np.zeros_like(np.array(Image.open(images[0]))[1:]) Loading @@ -31,6 +44,14 @@ def remove_noise(images, which_sensor): return average_image/len(same_sensor_images) return average_image/len(same_sensor_images) def remote_create_average(images, which_sensor): def remote_create_average(images, which_sensor): """ Create an average image from a list of images Parameters: images (list): a list of images which_sensor (int): the sensor number Returns: average_image (np.array): the average image """ sftp_client = setup_remote_sftpclient() sftp_client = setup_remote_sftpclient() averages = [] averages = [] Loading Loading @@ -81,6 +102,12 @@ def remote_file_extractor(headname = "/media/elphel/NVME/lwir16-proc/te0607/scen return scenes return scenes def remote_image_extractor(scenes): def remote_image_extractor(scenes): """Find all the files in the directory Parameters: dirname (str): the directory name Returns: image_folder (list): a list of all the file paths in the directory """ sftp_client = setup_remote_sftpclient() sftp_client = setup_remote_sftpclient() image_folder = [] image_folder = [] for scene in scenes: for scene in scenes: Loading @@ -93,6 +120,14 @@ def remote_image_extractor(scenes): sftp_client.close() sftp_client.close() return image_folder #returns a list of file paths to .tiff files in the specified directory given in file_extractor return image_folder #returns a list of file paths to .tiff files in the specified directory given in file_extractor def find_only_in_channel(images, channel_name = "10"): def find_only_in_channel(images, channel_name = "10"): """ Find the images that are only in the specified channel Parameters: images (list): a list of images channel_name (str): the channel name Returns: same_sensor_images (list): a list of images that are only in the specified channel """ same_sensor_images = [] same_sensor_images = [] for i, image_name in enumerate(images): for i, image_name in enumerate(images): if int(channel_name) > 9: if int(channel_name) > 9: Loading @@ -103,6 +138,14 @@ def find_only_in_channel(images, channel_name = "10"): same_sensor_images.append(image_name) same_sensor_images.append(image_name) return same_sensor_images return same_sensor_images def adjust_to_original(new_image, average_image): def adjust_to_original(new_image, average_image): """ Adjust the image to the original image Parameters: new_image (np.array): the new image average_image (np.array): the average image Returns: adjusted_image (np.array): the adjusted image """ original_image_min = np.min(new_image) original_image_min = np.min(new_image) original_image_max = np.max(new_image) original_image_max = np.max(new_image) average_image = average_image - np.mean(average_image) average_image = average_image - np.mean(average_image) Loading @@ -126,12 +169,26 @@ def adjust_to_original(new_image, average_image): return adjusted_image.astype(np.uint16) return adjusted_image.astype(np.uint16) def color_adjust(visual_array): def color_adjust(visual_array): """ Adjust the image to the original image Parameters: visual_array (np.array): the visual array Returns: adjusted_array (np.array): the adjusted image """ min_of_errors = np.min(visual_array) min_of_errors = np.min(visual_array) adjusted_array = visual_array - min_of_errors adjusted_array = visual_array - min_of_errors adjusted_array = adjusted_array/np.max(adjusted_array) adjusted_array = adjusted_array/np.max(adjusted_array) return adjusted_array return adjusted_array def save_new_average(quantity_of_images = 1500, channel = "10", head_dir = "/media/elphel/NVME/lwir16-proc/te0607/scenes/"): def save_new_average(quantity_of_images = 1500, channel = "10", head_dir = "/media/elphel/NVME/lwir16-proc/te0607/scenes/"): """ Save the new average image Parameters: quantity_of_images (int): the number of images to use in the average channel (str): the channel name head_dir (str): the head directory """ scenes = remote_file_extractor(head_dir) scenes = remote_file_extractor(head_dir) images = find_only_in_channel(remote_image_extractor(scenes),channel) images = find_only_in_channel(remote_image_extractor(scenes),channel) if quantity_of_images != "all": if quantity_of_images != "all": Loading @@ -142,7 +199,14 @@ def save_new_average(quantity_of_images = 1500, channel = "10", head_dir = "/med average_savable_image = Image.fromarray(average_image) average_savable_image = Image.fromarray(average_image) average_savable_image.save("Average_On_Channel(" + channel + ").tiff") average_savable_image.save("Average_On_Channel(" + channel + ").tiff") def create_testable_images(images, selected_channel, quantity_of_images): def save_testable_images(images, selected_channel, quantity_of_images): """ Saves the testable images Parameters: images (list): a list of images selected_channel (str): the channel name quantity_of_images (int): the number of images to use in the average """ sftp_client = setup_remote_sftpclient() sftp_client = setup_remote_sftpclient() images = find_only_in_channel(images, selected_channel) images = find_only_in_channel(images, selected_channel) Loading Loading @@ -174,8 +238,8 @@ def create_testable_images(images, selected_channel, quantity_of_images): sftp_client.close() sftp_client.close() def save_new_gauss(): def save_new_gauss(): """\ """ creates gaussian kernel with side length `l` and a sigma of `sig` Save the new gauss image """ """ # x,y = np.mgrid[-1:1:.003125, -1:1:.003125] # x,y = np.mgrid[-1:1:.003125, -1:1:.003125] Loading Loading @@ -206,7 +270,7 @@ if __name__ == "__main__": images = remote_image_extractor(scenes) images = remote_image_extractor(scenes) images = find_only_in_channel(images, "11") images = find_only_in_channel(images, "11") # average_image = np.array(Image.open("Average_On_Channel(" + "11" + ").tiff")) # average_image = np.array(Image.open("Average_On_Channel(" + "11" + ").tiff")) # create_testable_images(images,"11",3) # save_testable_images(images,"11",3) # plt.imshow(color_adjust(average_image),cmap='gray',vmin = 0, vmax=1) # plt.imshow(color_adjust(average_image),cmap='gray',vmin = 0, vmax=1) # plt.show() # plt.show() Loading Loading
Remove_Noise.py +69 −5 Original line number Original line Diff line number Diff line Loading @@ -7,13 +7,26 @@ from scipy.stats import multivariate_normal from skimage.restoration import wiener from skimage.restoration import wiener def setup_remote_sftpclient(): def setup_remote_sftpclient(): """ Setup the SFTP client Returns: sftp_client (paramiko.SFTPClient): the SFTP client """ client = paramiko.SSHClient() client = paramiko.SSHClient() client.load_system_host_keys() client.load_system_host_keys() client.connect("192.168.0.107", username="elphel") client.connect("192.168.0.107", username="elphel") sftp_client = client.open_sftp() sftp_client = client.open_sftp() return sftp_client return sftp_client def remove_noise(images, which_sensor): def create_average(images, which_sensor): """ Create an average image from a list of images Parameters: images (list): a list of images which_sensor (int): the sensor number Returns: average_image (np.array): the average image """ same_sensor_images = [] same_sensor_images = [] which_sensor = str(which_sensor) which_sensor = str(which_sensor) average_image = np.zeros_like(np.array(Image.open(images[0]))[1:]) average_image = np.zeros_like(np.array(Image.open(images[0]))[1:]) Loading @@ -31,6 +44,14 @@ def remove_noise(images, which_sensor): return average_image/len(same_sensor_images) return average_image/len(same_sensor_images) def remote_create_average(images, which_sensor): def remote_create_average(images, which_sensor): """ Create an average image from a list of images Parameters: images (list): a list of images which_sensor (int): the sensor number Returns: average_image (np.array): the average image """ sftp_client = setup_remote_sftpclient() sftp_client = setup_remote_sftpclient() averages = [] averages = [] Loading Loading @@ -81,6 +102,12 @@ def remote_file_extractor(headname = "/media/elphel/NVME/lwir16-proc/te0607/scen return scenes return scenes def remote_image_extractor(scenes): def remote_image_extractor(scenes): """Find all the files in the directory Parameters: dirname (str): the directory name Returns: image_folder (list): a list of all the file paths in the directory """ sftp_client = setup_remote_sftpclient() sftp_client = setup_remote_sftpclient() image_folder = [] image_folder = [] for scene in scenes: for scene in scenes: Loading @@ -93,6 +120,14 @@ def remote_image_extractor(scenes): sftp_client.close() sftp_client.close() return image_folder #returns a list of file paths to .tiff files in the specified directory given in file_extractor return image_folder #returns a list of file paths to .tiff files in the specified directory given in file_extractor def find_only_in_channel(images, channel_name = "10"): def find_only_in_channel(images, channel_name = "10"): """ Find the images that are only in the specified channel Parameters: images (list): a list of images channel_name (str): the channel name Returns: same_sensor_images (list): a list of images that are only in the specified channel """ same_sensor_images = [] same_sensor_images = [] for i, image_name in enumerate(images): for i, image_name in enumerate(images): if int(channel_name) > 9: if int(channel_name) > 9: Loading @@ -103,6 +138,14 @@ def find_only_in_channel(images, channel_name = "10"): same_sensor_images.append(image_name) same_sensor_images.append(image_name) return same_sensor_images return same_sensor_images def adjust_to_original(new_image, average_image): def adjust_to_original(new_image, average_image): """ Adjust the image to the original image Parameters: new_image (np.array): the new image average_image (np.array): the average image Returns: adjusted_image (np.array): the adjusted image """ original_image_min = np.min(new_image) original_image_min = np.min(new_image) original_image_max = np.max(new_image) original_image_max = np.max(new_image) average_image = average_image - np.mean(average_image) average_image = average_image - np.mean(average_image) Loading @@ -126,12 +169,26 @@ def adjust_to_original(new_image, average_image): return adjusted_image.astype(np.uint16) return adjusted_image.astype(np.uint16) def color_adjust(visual_array): def color_adjust(visual_array): """ Adjust the image to the original image Parameters: visual_array (np.array): the visual array Returns: adjusted_array (np.array): the adjusted image """ min_of_errors = np.min(visual_array) min_of_errors = np.min(visual_array) adjusted_array = visual_array - min_of_errors adjusted_array = visual_array - min_of_errors adjusted_array = adjusted_array/np.max(adjusted_array) adjusted_array = adjusted_array/np.max(adjusted_array) return adjusted_array return adjusted_array def save_new_average(quantity_of_images = 1500, channel = "10", head_dir = "/media/elphel/NVME/lwir16-proc/te0607/scenes/"): def save_new_average(quantity_of_images = 1500, channel = "10", head_dir = "/media/elphel/NVME/lwir16-proc/te0607/scenes/"): """ Save the new average image Parameters: quantity_of_images (int): the number of images to use in the average channel (str): the channel name head_dir (str): the head directory """ scenes = remote_file_extractor(head_dir) scenes = remote_file_extractor(head_dir) images = find_only_in_channel(remote_image_extractor(scenes),channel) images = find_only_in_channel(remote_image_extractor(scenes),channel) if quantity_of_images != "all": if quantity_of_images != "all": Loading @@ -142,7 +199,14 @@ def save_new_average(quantity_of_images = 1500, channel = "10", head_dir = "/med average_savable_image = Image.fromarray(average_image) average_savable_image = Image.fromarray(average_image) average_savable_image.save("Average_On_Channel(" + channel + ").tiff") average_savable_image.save("Average_On_Channel(" + channel + ").tiff") def create_testable_images(images, selected_channel, quantity_of_images): def save_testable_images(images, selected_channel, quantity_of_images): """ Saves the testable images Parameters: images (list): a list of images selected_channel (str): the channel name quantity_of_images (int): the number of images to use in the average """ sftp_client = setup_remote_sftpclient() sftp_client = setup_remote_sftpclient() images = find_only_in_channel(images, selected_channel) images = find_only_in_channel(images, selected_channel) Loading Loading @@ -174,8 +238,8 @@ def create_testable_images(images, selected_channel, quantity_of_images): sftp_client.close() sftp_client.close() def save_new_gauss(): def save_new_gauss(): """\ """ creates gaussian kernel with side length `l` and a sigma of `sig` Save the new gauss image """ """ # x,y = np.mgrid[-1:1:.003125, -1:1:.003125] # x,y = np.mgrid[-1:1:.003125, -1:1:.003125] Loading Loading @@ -206,7 +270,7 @@ if __name__ == "__main__": images = remote_image_extractor(scenes) images = remote_image_extractor(scenes) images = find_only_in_channel(images, "11") images = find_only_in_channel(images, "11") # average_image = np.array(Image.open("Average_On_Channel(" + "11" + ").tiff")) # average_image = np.array(Image.open("Average_On_Channel(" + "11" + ").tiff")) # create_testable_images(images,"11",3) # save_testable_images(images,"11",3) # plt.imshow(color_adjust(average_image),cmap='gray',vmin = 0, vmax=1) # plt.imshow(color_adjust(average_image),cmap='gray',vmin = 0, vmax=1) # plt.show() # plt.show() Loading