如何对HSV颜色映射进行裁剪与重映射以复刻napari效果?
实现HSV颜色映射范围的裁剪与重映射(复刻napari效果)
我需要对HSV颜色映射的特定范围进行裁剪与重映射,尝试用Python代码复刻napari图像查看器的图像处理效果,但始终无法实现HSV范围的重新缩放。
输入图像

第一段尝试代码
import os, glob import cv2 import matplotlib.pyplot as plt from skimage import io, exposure from natsort import natsorted import numpy as np image1 = cv2.imread('Garfield.tiff') image2 = exposure.rescale_intensity (image1, in_range=(100, 230)) image3 = np.zeros(image2.shape, image2.dtype) #alpha = 1.5 # Simple contrast control #beta = 0 # Simple brightness control for y in range(image2.shape[0]): for x in range(image2.shape[1]): for c in range(image2.shape[2]): image3[y,x,c] = np.clip(2 * image2[y,x,c], 0, 255) image4 = cv2.applyColorMap(image3, cv2.COLORMAP_HSV) cv2.imwrite("New_Garfield.tiff", image4)
第一段代码输出图像

napari目标效果

napari的对比度限制规则:
- 对比度限制为二元组,第二个值大于第一个
- 较小的限制值对应颜色映射中0定义的颜色,所有小于该值的图像数据都会被映射到该颜色
- 较大的限制值对应颜色映射中1定义的颜色,所有大于该值的图像数据都会被映射到该颜色
第二段尝试代码
import cv2 import numpy as np image1 = cv2.imread('Garfield.png') for y in range(image1.shape[0]): for x in range(image1.shape[1]): for c in range(image1.shape[2]): image1[y,x,c] = np.clip(2*image1[y,x,c], 0, 255) OldMax = 255 OldMin = 75 NewMax = 180 NewMin = 0 OldRange = (OldMax - OldMin) NewRange = (NewMax - NewMin) for x in range (image1.shape[0]): for y in range(image1.shape[1]): for c in range(image1.shape[2]): b = image1[:,:,0] g = image1[:,:,1] r = image1[:,:,2] h = (((g - OldMin) * NewRange) / OldRange) + NewMin c = (h, 255, 255) image2 = cv2.cvtColor(image1, cv2.COLOR_HSV2BGR) cv2.imwrite("Adjusted_Garfield.tiff", image2)
第二段代码输出图像

希望能得到帮助,实现HSV颜色映射的范围重新缩放。
内容的提问来源于stack exchange,提问作者Stone Gold
相关产品推荐
相关产品推荐

