من رفتم سربازی اگر محتوای منو دوست داشتید و بدردتون خورد از من حمایت مالی کنید

تبدیل rgb به hsi در پایتون

تبدیل rgb به hsi در پایتون
تبدیل rgb به hsi در پایتون

تبدیل rgb به hsi در پایتون

مدل‌های معروف رنگی RGB و HSI دو مدل رنگی معروف در دنیای پردازش تصویر و کار با تصاویر دیجیتال است. در این نوشته روش تبدیل داده‌های تصویر RGB به HSI را با کمک زبان برنامه نویسی پایتون به شما آموزش می‌دهیم.

 

تبدیل rgb به hsi در پایتون

تبدیل RGB به HSI دارای یک فرمول ریاضی معروف است که ابتدا می‌توانید در زیر آن را بررسی کنید:

فرمول تبدیل rgb به hsi

اگر فرمول بالا را دقت کنید می‌بینید که به سادگی فقط کافیست این فرمول را تبدیل به یک تابع زبان پایتون کنید. کد پایتون زیر به شما کمک می‌کند تا تبدیل RGB به HSI در پایتون انجام دهید.

def RGB_TO_HSI(img):

    with np.errstate(divide='ignore', invalid='ignore'):

        #Load image with 32 bit floats as variable type
        bgr = np.float32(img)/255

        #Separate color channels
        blue = bgr[:,:,0]
        green = bgr[:,:,1]
        red = bgr[:,:,2]

        #Calculate Intensity
        def calc_intensity(red, blue, green):
            return np.divide(blue + green + red, 3)

        #Calculate Saturation
        def calc_saturation(red, blue, green):
            minimum = np.minimum(np.minimum(red, green), blue)
            saturation = 1 - (3 / (red + green + blue + 0.001) * minimum)

            return saturation

        #Calculate Hue
        def calc_hue(red, blue, green):
            hue = np.copy(red)

            for i in range(0, blue.shape[0]):
                for j in range(0, blue.shape[1]):
                    hue[i][j] = 0.5 * ((red[i][j] - green[i][j]) + (red[i][j] - blue[i][j])) / \
                                math.sqrt((red[i][j] - green[i][j])**2 +
                                        ((red[i][j] - blue[i][j]) * (green[i][j] - blue[i][j])))
                    hue[i][j] = math.acos(hue[i][j])

                    if blue[i][j] <= green[i][j]:
                        hue[i][j] = hue[i][j]
                    else:
                        hue[i][j] = ((360 * math.pi) / 180.0) - hue[i][j]

            return hue

        #Merge channels into picture and return image
        hsi = cv2.merge((calc_hue(red, blue, green), calc_saturation(red, blue, green), calc_intensity(red, blue, green)))
        return hsi

 

اگر کدهای بهتری برای تبدیل RGB به HSI در پایتون دارید در بخش نظرات همین نوشته برای ما ارسال کنید تا به این نوشته اضافه شود.

برای امتیاز به این نوشته کلیک کنید!
[کل: 0 میانگین: 0]