| |
| |
| |
| |
| |
| |
| import numpy as np |
|
|
| from basicsr.utils.matlab_functions import bgr2ycbcr |
|
|
|
|
| def reorder_image(img, input_order='HWC'): |
| """Reorder images to 'HWC' order. |
| |
| If the input_order is (h, w), return (h, w, 1); |
| If the input_order is (c, h, w), return (h, w, c); |
| If the input_order is (h, w, c), return as it is. |
| |
| Args: |
| img (ndarray): Input image. |
| input_order (str): Whether the input order is 'HWC' or 'CHW'. |
| If the input image shape is (h, w), input_order will not have |
| effects. Default: 'HWC'. |
| |
| Returns: |
| ndarray: reordered image. |
| """ |
|
|
| if input_order not in ['HWC', 'CHW']: |
| raise ValueError( |
| f'Wrong input_order {input_order}. Supported input_orders are ' |
| "'HWC' and 'CHW'") |
| if len(img.shape) == 2: |
| img = img[..., None] |
| if input_order == 'CHW': |
| img = img.transpose(1, 2, 0) |
| return img |
|
|
|
|
| def to_y_channel(img): |
| """Change to Y channel of YCbCr. |
| |
| Args: |
| img (ndarray): Images with range [0, 255]. |
| |
| Returns: |
| (ndarray): Images with range [0, 255] (float type) without round. |
| """ |
| img = img.astype(np.float32) / 255. |
| if img.ndim == 3 and img.shape[2] == 3: |
| img = bgr2ycbcr(img, y_only=True) |
| img = img[..., None] |
| return img * 255. |
|
|