コード例 #1
0
 def test_rgb_lch_roundtrip(self):
     rgb = img_as_float(self.img_rgb)
     lab = rgb2lab(rgb)
     lch = lab2lch(lab)
     lab2 = lch2lab(lch)
     rgb2 = lab2rgb(lab2)
     assert_array_almost_equal(rgb, rgb2)
コード例 #2
0
ファイル: test_colorconv.py プロジェクト: AceHao/scikit-image
 def test_rgb_lch_roundtrip(self):
     rgb = img_as_float(self.img_rgb)
     lab = rgb2lab(rgb)
     lch = lab2lch(lab)
     lab2 = lch2lab(lch)
     rgb2 = lab2rgb(lab2)
     assert_array_almost_equal(rgb, rgb2)
コード例 #3
0
def change_hue(img, hue):
    lab_img = rgb2lab(img)
    lch_img = lab2lch(lab_img)
    lch_img[:, :, 2] = hue
    lab_img = lch2lab(lch_img)
    rgb_img = lab2rgb(lab_img)
    return rgb_img
コード例 #4
0
def test_lab_lch_roundtrip_dtypes(dtype):
    rgb = img_as_float(data.colorwheel()).astype(dtype=dtype, copy=False)
    lab = rgb2lab(rgb)
    float_dtype = _supported_float_type(dtype)
    assert lab.dtype == float_dtype
    lab2 = lch2lab(lab2lch(lab))
    decimal = 4 if float_dtype == np.float32 else 7
    assert_array_almost_equal(lab2, lab, decimal=decimal)
コード例 #5
0
 def test_lab_lch_roundtrip(self, channel_axis):
     rgb = img_as_float(self.img_rgb)
     rgb = np.moveaxis(rgb, source=-1, destination=channel_axis)
     lab = rgb2lab(rgb, channel_axis=channel_axis)
     lab2 = lch2lab(
         lab2lch(lab, channel_axis=channel_axis),
         channel_axis=channel_axis,
     )
     assert_array_almost_equal(lab2, lab)
コード例 #6
0
def lch2rgb(lch):
    """Convert LCH to RGB colorspace (via LAB)
    Input and output are in (bands, cols, rows) order
    """
    # reshape for skimage (bands, cols, rows) -> (cols, rows, bands)
    slch = np.swapaxes(lch, 0, 2)
    # convert colorspace
    rgb = lab2rgb(lch2lab(slch))
    # return in (bands, cols, rows) order
    return np.swapaxes(rgb, 2, 0)
コード例 #7
0
def change_color_lch(batch_id, pal_lab, pal_name):
    file_path = './samples/img/'
    result_path = './samples/result_lch/'
    file_list = os.listdir(file_path)
    pal_lch = lab2lch(pal_lab)

    for _, name in enumerate(file_list):
        img_ori = plt.imread(file_path + name)
        img_lab = rgb2lab(img_ori)
        img_lch = lab2lch(img_lab)
        counter_lch = [0, 0, 0, 0, 0, 0, 0]
        for i in range(len(img_lch)):
            for j in range(len(img_lch[i])):
                point_ori = img_lch[i][j][2]
                total_diff_last = 11  # lot((1-0)^2 + (1-0)^2) +1
                for k in range(5):
                    point_pal = pal_lch[k][2]
                    total_diff = abs(point_ori - point_pal)
                    # 180 도 이상 처리 예각으로 대체
                    if total_diff > 5:
                        total_diff = 10 - total_diff
                        counter_lch[6] += 1
                    if total_diff < total_diff_last:
                        point_ori_tmp = point_pal
                        total_diff_last = total_diff
                        counter_fin = k
                if img_lch[i][j][1] <= 0.2 and img_lch[i][j][
                        0] >= 9.8:  # 채도 3 이하 명도 98 이상 패스(흰색)
                    counter_lch[5] += 1
                # elif total_diff_last >= 1.2: #1.41
                #     counter_hsv[6] += 1
                else:
                    counter_lch[counter_fin] += 1
                    img_lch[i][j][2] = point_ori_tmp
        sum_total = counter_lch[0] + counter_lch[1] + counter_lch[
            2] + counter_lch[3] + counter_lch[4] + counter_lch[5]
        print(
            f'[{pal_name}의 {name[0:-4]} 적용 내역] 팔레트1:{counter_lch[0]:,}회, 팔레트2:{counter_lch[1]:,}회, '
            f'팔레트3:{counter_lch[2]:,}회, 팔레트4:{counter_lch[3]:,}회, 팔레트5:{counter_lch[4]:,}회, '
            f'흰색 패스:{counter_lch[5]:,}회, 팔레트 변환 :{sum_total-counter_lch[5]:,}회'
            f'({sum_total-counter_lch[5]-counter_lch[6]:,}회), 총 변환 :{sum_total:,}회'
        )
        img_trans = lch2lab(img_lch)
        img_trans = lab2rgb(img_trans, illuminant='D55')
        plt.imsave(
            os.path.join(result_path,
                         f'{batch_id}_{pal_name}_{name[0:-4]}.png'), img_trans)
コード例 #8
0
def preserve_color_cielch(content, stylized, image_name):

    # extract info and convert to CIE-LCh for each image
    rgbContent = io.imread(content)
    labContent = color.lab2lch(
        color.xyz2lab(color.rgb2xyz(numpy.asarray(rgbContent))))
    labContentArray = numpy.array(labContent)
    rgbStyle = io.imread(stylized)
    labStyle = color.lab2lch(
        color.xyz2lab(color.rgb2xyz(numpy.asarray(rgbStyle))))
    labStyleArray = numpy.array(labStyle)

    # color transfer
    for i in range(len(labContentArray)):
        for j in range(len(labContentArray[0])):
            labContentArray[i][j][0] = labStyleArray[i][j][0]

    labContentArray = color.xyz2rgb(
        color.lab2xyz(color.lch2lab(labContentArray)))
    viewer = ImageViewer(labContentArray)
    viewer.show()
コード例 #9
0
 def test_lab_lch_roundtrip(self):
     rgb = img_as_float(self.img_rgb)
     lab = rgb2lab(rgb)
     lab2 = lch2lab(lab2lch(lab))
     assert_array_almost_equal(lab2, lab)
コード例 #10
0
REEXP_FOLDER_SCALE = r'\S*scale-(\d+)pc'
# ERROR:root:error: Image size (... pixels) exceeds limit of ... pixels,
# could be decompression bomb DOS attack.
# SEE: https://gitlab.mister-muffin.de/josch/img2pdf/issues/42
Image.MAX_IMAGE_PIXELS = None
#: maximal image size for visualisations, larger images will be downscaled
MAX_IMAGE_SIZE = 5000
#: define pair of forward and backward color space conversion
CONVERT_RGB = {
    'rgb': (lambda img: img, lambda img: img),
    'hsv': (rgb2hsv, hsv2rgb),
    'lab': (rgb2lab, lab2rgb),
    'luv': (rgb2luv, luv2rgb),
    'hed': (rgb2hed, hed2rgb),
    'lch':
    (lambda img: lab2lch(rgb2lab(img)), lambda img: lab2rgb(lch2lab(img))),
}


def detect_binary_blocks(vec_bin):
    """ detect the binary object by beginning, end and length in !d signal

    :param list(bool) vec_bin: binary vector with 1 for an object
    :return tuple(list(int),list(int),list(int)):

    >>> vec = np.array([1] * 15 + [0] * 5 + [1] * 20)
    >>> detect_binary_blocks(vec)
    ([0, 20], [15, 39], [14, 19])
    """
    begins, ends, lengths = [], [], []
コード例 #11
0
    return color.xyz2lab(tmp_xyz)


def hsb2lab(shb_pic):
    tmp_rgb = color.hsv2rgb(hsv)
    tmp_xyz = color.rgb2xyz(tmp_rgb)
    return color.xyz2lab(tmp_xyz)


def hsi2lab(shi_pic):
    tmp_rgb = color.hsv2rgb(hsv)
    tmp_xyz = color.rgb2xyz(tmp_rgb)
    return color.xyz2lab(tmp_xyz)


show_lch2lab = color.lch2lab(lch)
print("show_lch2lab")
print_pic(show_lch2lab)

show_rgb2lab = color.rgb2lab(Rgb)
print("show_rgb2lab")
print_pic(show_rgb2lab)

show_hsv2lab = hsv2lab(hsv)
print("show_hsv2lab")
print_pic(show_hsv2lab)

show_hsb2lab = hsb2lab(hsb)
print("show_hsb2lab")
print_pic(show_hsb2lab)
コード例 #12
0
ファイル: test_colorconv.py プロジェクト: AceHao/scikit-image
 def test_lab_lch_roundtrip(self):
     rgb = img_as_float(self.img_rgb)
     lab = rgb2lab(rgb)
     lab2 = lch2lab(lab2lch(lab))
     assert_array_almost_equal(lab2, lab)
コード例 #13
0
def lch2rgb(lch):
    lab = color.lch2lab(lch)
    return color.lab2rgb(lab)
コード例 #14
0
 def surface(s, t):
   LCH = np.stack((L(s, t, grid=False), C(s, t, grid=False), H(s, t, grid=False)), axis=-1)
   return color.lch2lab(LCH)
コード例 #15
0
 def curve(t):
   LCH = np.stack((L(t), C(t), H(t)), axis=-1)
   return color.lch2lab(LCH)
コード例 #16
0
def lch2rgb(lch):
    return color.lab2rgb(color.lch2lab(lch.astype(float))) * 255