عضو کانال یوتیوب ما شوید.

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

تبدیل 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]