欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python圖像處理之圖像增廣算法詳解

 更新時間:2023年05月12日 14:05:22   作者:夏天是冰紅茶  
圖像增廣算法在計算機視覺領域扮演著至關重要的角色,本文將著重介紹圖像增廣算法中的三個關鍵方面:圖像旋轉、圖像亮度調整以及圖像裁剪與拼接,感興趣的可以了解一下

前言

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

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

圖像增廣算法

這里我們將使用一些Python優(yōu)秀的第三方庫來完成。在圖像增廣方面,有許多可供選擇的第三方庫,如PIL/Pillow、OpenCV、scikit-image等。而在PyTorch中也提供了一些圖像增廣的函數(shù),雖然圖像增廣算法在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函數(shù)計算旋轉矩陣,然后使用cv2.warpAffine函數(shù)執(zhí)行旋轉操作。最后,使用cv2.imshow函數(shù)顯示旋轉前后的圖像。 

實驗結果: 

原始圖片與旋轉圖片

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

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

實驗結果:

原始圖片與亮度調整圖片

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

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

實驗結果:

裁剪圖像并用灰色填充

拼接

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('圖像拼接失敗')

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

實驗結果: 

拼接的圖像

實驗分析

實驗圖片:300x300,Leopard_cat.png

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

關于拼接出現(xiàn)黑邊的分析:

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

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

總的來說,盡管在圖像拼接過程中可能會出現(xiàn)一些黑邊,但這并不會嚴重影響整體的拼接結果。通過適當?shù)暮筇幚矸椒?,我們可以進一步改善圖像的外觀,并獲得更好的拼接效果。

本章小結

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

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

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

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

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

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

以上就是Python圖像處理之圖像增廣算法詳解的詳細內容,更多關于Python圖像增廣算法的資料請關注腳本之家其它相關文章!

相關文章

  • Python3 實現(xiàn)文件批量重命名示例代碼

    Python3 實現(xiàn)文件批量重命名示例代碼

    在Python中os模塊里,os.renames() 方法用于遞歸重命名目錄或文件。這篇文章主要介紹了Python3 文件批量重命名操作示例,需要的朋友可以參考下
    2019-06-06
  • Python抽象類應用詳情

    Python抽象類應用詳情

    這篇文章主要介紹了Python抽象類應用詳情,抽象類就是控制子類的方法的名稱,要求子類必須按照父類的要求的實現(xiàn)指定的方法,且方法名要和父類保持一致,下文更多相關介紹需要的小伙伴可以參考一下
    2022-04-04
  • pytorch中函數(shù)tensor.numpy()的數(shù)據(jù)類型解析

    pytorch中函數(shù)tensor.numpy()的數(shù)據(jù)類型解析

    這篇文章主要介紹了pytorch中函數(shù)tensor.numpy()的數(shù)據(jù)類型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python實現(xiàn)合并同一個文件夾下所有txt文件的方法示例

    Python實現(xiàn)合并同一個文件夾下所有txt文件的方法示例

    這篇文章主要介紹了Python實現(xiàn)合并同一個文件夾下所有txt文件的方法,涉及Python針對文件的遍歷、讀取、寫入等相關操作技巧,需要的朋友可以參考下
    2018-04-04
  • 如何用python合并多個excel文件

    如何用python合并多個excel文件

    這篇文章主要介紹了如何用python合并多個excel文件,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • 基于python實現(xiàn)井字棋小游戲

    基于python實現(xiàn)井字棋小游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)井字棋小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 解決更改AUTH_USER_MODEL后出現(xiàn)的問題

    解決更改AUTH_USER_MODEL后出現(xiàn)的問題

    這篇文章主要介紹了解決更改AUTH_USER_MODEL后出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • VS2019+python3.7+opencv4.1+tensorflow1.13配置詳解

    VS2019+python3.7+opencv4.1+tensorflow1.13配置詳解

    這篇文章主要介紹了VS2019+python3.7+opencv4.1+tensorflow1.13配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • python實現(xiàn)盲盒抽獎功能(減庫存)

    python實現(xiàn)盲盒抽獎功能(減庫存)

    本文主要介紹了python實現(xiàn)盲盒抽獎功能,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 分享5個數(shù)據(jù)處理更加靈活的pandas調用函數(shù)方法

    分享5個數(shù)據(jù)處理更加靈活的pandas調用函數(shù)方法

    這篇文章主要介紹了分享5個數(shù)據(jù)處理更加靈活的pandas調用函數(shù)方法,文章基于python的相關內容展開詳細介紹,需要的小伙伴可以參考一下
    2022-04-04

最新評論