簡體   English   中英

將圖像分成補丁

[英]Dividing images into patches

我想練習 patchify 庫以學習如何將圖像分成幾個補丁,為此,我找到了以下站點: image into patches

我也有下載示例圖像,在這里給出: 海洋形象

此圖像的尺寸為 612 X 408,因此在網站的基礎上,我應用了代碼並收到以下錯誤:

raise ValueError(" window_shapearr_in.shape不兼容 ") ValueError: window_shapearr_in.shape不兼容

代碼在這里給出:

`import numpy as np
from patchify import patchify
from PIL import Image
import cv2
#ocean =Image.open("ocean.jpg") #612 X 408
ocean =cv2.imread("ocean.jpg")
print(ocean.size)
ocean = np.asarray(ocean)
patches =patchify(ocean,(306,204),2)
print(patches.shape)
for i in range(patches.shape[0]):
    for j in range(patches.shape[1]):
        patch = patches[i, j]
        patch = Image.fromarray(patch)
        num = i * patches.shape[1] + j
        patch.save(f"patch_{num}.jpg")`

所以我的問題是如何確定 window 形狀? 我使用 (306,204) 因為它只是原始圖像形狀的一半,選擇 window 形狀有什么規則嗎?當我搜索這個問題時,我找到了以下解決方案

可能的解決方案

在這個鏈接上給出了這樣的建議:

**或者原始圖像不是一堆圖像(需要去除第一個循環)**

如果我將刪除外循環,那么我如何通過整個圖像 go? 請幫我

我們必須遵循文檔。

  • image 是一個 NumPy 數組...或 (image_height, image_width, N) 對於 N 通道圖像(如果是 RGB 則為 3 )。

  • patch_shape 是每個補丁的形狀,...或( patch_heightpatch_widthN

  • step 定義一個補丁之間的距離...如果 step ≥ patch_height 則同一行中的補丁之間沒有重疊...

假設我們要將圖像分成 2x2 塊使用:

patches = patchify(ocean, (204, 306, 3), 204)

筆記:
由於補丁不是正方形,因此在水平軸上存在重疊。
看起來 patchify 旨在用於具有一些重疊的補丁。


其他事宜:

  • 在 OpenCV 中,顏色通道的順序是 BGR,在 PIL 中,順序是 RGB。
    我們應該盡量不要使用 OpenCV 加載圖像並使用 PIL 保存它。
  • 在文檔中使用patch = patches[i, j, 0]而不是patch = patches[i, j]

代碼示例:

import numpy as np
from patchify import patchify
from PIL import Image
import cv2
ocean = np.array(Image.open("ocean.jpg")) #612 X 408
#ocean =cv2.imread("ocean.jpg")
print(ocean.shape)
ocean = np.asarray(ocean)
patches = patchify(ocean, (204, 306, 3), 204)
print(patches.shape)
for i in range(patches.shape[0]):
    for j in range(patches.shape[1]):
        patch = patches[i, j, 0]
        patch = Image.fromarray(patch)
        num = i * patches.shape[1] + j
        patch.save(f"patch_{num}.jpg")

在此處輸入圖像描述 在此處輸入圖像描述

在此處輸入圖像描述 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM