<nav id="luije"><kbd id="luije"></kbd></nav>
<center id="luije"><form id="luije"></form></center><tt id="luije"><form id="luije"></form></tt>
<output id="luije"><xmp id="luije"></xmp></output>
  • <form id="luije"><acronym id="luije"></acronym></form>
  • <output id="luije"><font id="luije"><rp id="luije"></rp></font></output>
    <sub id="luije"><form id="luije"></form></sub>
  • <sub id="luije"></sub>
    <li id="luije"></li>
  • <acronym id="luije"><noframes id="luije"><sub id="luije"></sub></noframes></acronym>
  • <rp id="luije"><output id="luije"></output></rp>
    <rp id="luije"></rp>
  • <var id="luije"></var>
  • <acronym id="luije"><nav id="luije"></nav></acronym>
  • <li id="luije"><strike id="luije"><font id="luije"></font></strike></li>
    <form id="luije"></form>
  • <output id="luije"><table id="luije"><input id="luije"></input></table></output>
  • <var id="luije"><table id="luije"></table></var>
    溫馨提示×

    溫馨提示×

    您好,登錄后才能下訂單哦!

    密碼登錄×
    登錄注冊×
    其他方式登錄
    點擊 登錄注冊 即表示同意《億速云用戶服務條款》

    Python圖像處理中圖像增廣算法介紹

    發布時間:2023-12-08 10:01:34 來源:億速云 閱讀:98 作者:栢白 欄目:開發技術

    今天小編給大家分享的是Python圖像處理中圖像增廣算法介紹,相信很多人都不太了解,為了讓大家更加了解,所以給大家總結了以下內容,一起往下看吧。一定會有所收獲的哦。

    前言

    圖像增廣算法在計算機視覺領域扮演著至關重要的角色。隨著深度學習的興起,大規模數據集的需求變得更加迫切,而圖像增廣算法可以通過對原始圖像進行一系列變換,擴充數據集,從而提升模型的泛化能力和魯棒性。

    本文將著重介紹圖像增廣算法中的三個關鍵方面:圖像旋轉、圖像亮度調整以及圖像裁剪與拼接。這些算法不僅能夠增加訓練數據的多樣性,還可以幫助我們解決一些實際問題,例如旋轉不變性、光照變化以及物體完整性等。

    圖像增廣算法

    這里我們將使用一些Python優秀的第三方庫來完成。在圖像增廣方面,有許多可供選擇的第三方庫,如PIL/Pillow、OpenCV、scikit-image等。而在PyTorch中也提供了一些圖像增廣的函數,雖然圖像增廣算法在PyTorch中也屬于預處理的一部分,但為了方便起見,我們仍然選擇使用大家較為熟悉的OpenCV庫,而不使用PyTorch。

    a.圖像旋轉

    def Rotated_image(img, angle = 45, scale = 1.0):
        height, width = img.shape[:2]
        center = (width // 2, height // 2)
        matrix = cv2.getRotationMatrix2D(center, angle, scale) #旋轉中心,旋轉角度,縮放比例
        rotated_image = cv2.warpAffine(img, matrix, (width, height))
        return rotated_image

    通過cv2.getRotationMatrix2D函數計算旋轉矩陣,然后使用cv2.warpAffine函數執行旋轉操作。最后,使用cv2.imshow函數顯示旋轉前后的圖像。 

    實驗結果: 

    Python圖像處理中圖像增廣算法介紹

    原始圖片與旋轉圖片

    b.圖像亮度調整

    def Adjusted_image(img,brightness_factor = 1.5):
        image_float = img.astype(np.float32)
        adjusted_image = image_float * brightness_factor
        # 將圖像像素值限制在[0, 255]范圍內
        adjusted_image = np.clip(adjusted_image, 0, 255)
        adjusted_image = adjusted_image.astype(np.uint8)
        return adjusted_image

    將圖像轉換為浮點型數據類型。然后,通過乘以一個亮度調整因子來調整圖像的亮度,這里的亮度調整因子可以根據具體需求進行調整。接下來,我們使用np.clip函數將圖像像素值限制在[0, 255]范圍內,避免溢出。最后,我們將圖像轉換回無符號8位整數類型,并顯示調整后的圖像。

    實驗結果:

    Python圖像處理中圖像增廣算法介紹

    原始圖片與亮度調整圖片

    c.圖像裁剪及拼接

    裁剪

    def Cut_image(image,coordinate, Leath, save=True, saveFile=''):
        x, y=coordinate[0],coordinate[1]
        width, height=Leath[0],Leath[1]
        h, w = image.shape[:2]
        cropped_image = image[y:y + height, x:x + width]
        padded_image = np.full((h, w, 3), 128, dtype=np.uint8)
        x_offset = (w - width) // 2
        y_offset = (h - height) // 2
        padded_image[y_offset:y_offset + height, x_offset:x_offset + width] = cropped_image
        if save:
            cv2.imwrite(saveFile,cropped_image)
        return padded_image

    此功能為裁剪圖像并用灰色填充不足的部分。添加了保存功能,默認不使用。

    實驗結果:

    Python圖像處理中圖像增廣算法介紹

    裁剪圖像并用灰色填充

    拼接

    def Stitcher_image(image_paths):
        stitcher = cv2.Stitcher_create()
        images = []
        for path in image_paths:
            img = cv2.imread(path)
            if img is not None:
                images.append(img)
        if len(images) < 2:
            print('至少需要兩個圖像進行拼接')
            return
        (status, stitched_image) = stitcher.stitch(images)
        if status == cv2.Stitcher_OK:
            return stitched_image
        else:
            print('圖像拼接失敗')

    輸入圖片路徑組成的列表,數量大于等于2才可進行拼接。下圖是經過裁剪后保存的圖片,原圖片似乎因為較小,拼接時無法成功,經過放大再裁剪后拼接,實驗成功。

    Python圖像處理中圖像增廣算法介紹

    實驗結果: 

    Python圖像處理中圖像增廣算法介紹

    拼接的圖像

    實驗分析

    實驗圖片:300x300,Leopard_cat.png

    Python圖像處理中圖像增廣算法介紹

    本次實驗采用一張300x300大小的梅貍貓圖片進行實驗,并進行了圖像旋轉、圖像亮度調整以及圖像裁剪與拼接,效果均達到我的預期,在圖像裁剪的過程中,因為考慮到做的是數據增廣,所以添加了灰度條,保證裁剪后的圖片大小與原始圖片相同;拼接的圖片似乎不能太小,可能會拼接失敗,本實驗經過圖片進行放大后裁剪后拼接,實驗成功。

    關于拼接出現黑邊的分析:

    在實驗過程中,我們注意到拼接后的圖像邊緣可能會出現一些黑邊。這是由于圖像拼接算法的工作原理所致,它會嘗試將圖像進行平滑過渡,以便在拼接處產生較少的不連續性。在一些情況下,這可能會導致邊緣處的像素值略微偏暗,從而形成黑邊。

    雖然這些黑邊可能對整體圖像的觀感產生一些影響,但通常情況下它們并不會嚴重干擾圖像的內容。如果你認為黑邊對你的應用場景有較大影響,您可以嘗試進行后處理來減輕或消除黑邊的影響。如邊緣增強、圖像修復或邊緣填充等,來改善黑邊問題。

    總的來說,盡管在圖像拼接過程中可能會出現一些黑邊,但這并不會嚴重影響整體的拼接結果。通過適當的后處理方法,我們可以進一步改善圖像的外觀,并獲得更好的拼接效果。

    本章小結

    本章介紹了圖像處理中常見的幾種操作:旋轉、亮度調整、裁剪、拼接等。通過使用OpenCV和NumPy庫的函數,輕松地實現了。

    首先,通過cv2.getRotationMatrix2D和cv2.warpAffine函數,我們可以指定旋轉中心、旋轉角度和縮放比例來旋轉圖像。

    接下來,將圖像轉換為浮點數類型,我們可以通過乘以亮度因子并將像素值控制在0到255之間來調整圖像亮度。

    然后,通過指定裁剪區域的坐標和長度,我們可以裁剪出我們需要的圖像,并使用灰色填充圖像的不足部分。

    最后,使用cv2.Stitcher_create和stitch函數,我們可以將多張圖像拼接在一起,從而創建一個更大的圖像。在拼接過程中,我們需要注意邊緣區域可能會有黑邊的問題,可以使用圖像裁剪來去除。

    上述這些操作是圖像處理中非?;A的操作,在實際應用中也非常常見。掌握這些基礎操作后,我們可以更加輕松地實現更復雜的圖像處理算法。

    關于Python圖像處理中圖像增廣算法介紹就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    自拍偷自拍亚洲精品牛影院_99久热re在线精品99re8_国国产a国产片免费_成人午夜精品无码区
    <nav id="luije"><kbd id="luije"></kbd></nav>
    <center id="luije"><form id="luije"></form></center><tt id="luije"><form id="luije"></form></tt>
    <output id="luije"><xmp id="luije"></xmp></output>
  • <form id="luije"><acronym id="luije"></acronym></form>
  • <output id="luije"><font id="luije"><rp id="luije"></rp></font></output>
    <sub id="luije"><form id="luije"></form></sub>
  • <sub id="luije"></sub>
    <li id="luije"></li>
  • <acronym id="luije"><noframes id="luije"><sub id="luije"></sub></noframes></acronym>
  • <rp id="luije"><output id="luije"></output></rp>
    <rp id="luije"></rp>
  • <var id="luije"></var>
  • <acronym id="luije"><nav id="luije"></nav></acronym>
  • <li id="luije"><strike id="luije"><font id="luije"></font></strike></li>
    <form id="luije"></form>
  • <output id="luije"><table id="luije"><input id="luije"></input></table></output>
  • <var id="luije"><table id="luije"></table></var>