第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么在屏蔽圖像和裁剪圖像時會得到不同的 glcms

為什么在屏蔽圖像和裁剪圖像時會得到不同的 glcms

慕容3067478 2022-12-27 10:04:57
我正在嘗試基于從 GLCM 中提取的特征構(gòu)建圖像分類模型。我想屏蔽一些圖像以改進模型,當然我不希望 GLCM 將這些像素考慮在內(nèi)?;谝韵绿?,我已經(jīng)實施并進行了測試,以確保 GLCM 對蒙版圖像正常工作:1)拍攝圖像并創(chuàng)建裁剪版本和遮罩版本(在裁剪的相同像素中)。2) 將圖像轉(zhuǎn)換為 int32 類型并執(zhí)行以下操作:#adding 1 to all pixels and setting masked pixels as zero. mask_img+=1crop_img+=1mask_img[:,:,2][:,int(img.shape[1]/2):int(img.shape[1])] = 0glcm_crop = greycomatrix(crop_img[:,:,2],                 levels=257,                distances=1,                 angles=0,                symmetric=True,                normed=True)glcm_masked = greycomatrix(mask_img[:,:,2],                 levels=257,                distances=1,                 angles=0,                symmetric=True,                normed=True)#discarding the first row and column that represent zero value pixelsglcm_masked =glcm_masked[1:, 1:, :, :]glcm_crop = glcm_crop[1:, 1:, :, :]所以在這個測試中,如果 GLCM 不受蒙版像素的影響,我預計蒙版和裁剪圖像的矩陣都是相同的。但實際上矩陣是不同的。我對 GLCM 工作原理的理解是否正確?這兩個矩陣應該相等在理論上有意義嗎?
查看完整描述

1 回答

?
喵喵時光機

TA貢獻1846條經(jīng)驗 獲得超7個贊

讓我們慢慢瀏覽代碼。首先我們導入必要的模塊,加載圖像類型np.int32并增加圖像所有像素的像素強度1:


import numpy as np

from skimage import data

from skimage.feature import greycomatrix


img = data.astronaut().astype(np.int32) + 1

然后我們定義圖像的形狀和強度級別的數(shù)量:


rows, cols, _ = img.shape

levels = 256

現(xiàn)在我們裁剪圖像的藍色通道,這樣我們只保留左半部分:


crop_img = img[:, :cols//2, 2]

圖像的藍色通道的右半邊被蒙版如下:


mask_img = img[:, :, 2].copy()

mask_img[:, cols//2:] = 0

為了這個例子,包裝 GLCM 計算很方便:


def glcm_wrapper(arr):

    glcm = greycomatrix(arr, levels=levels+1, distances=[1], angles=[0])

    return np.squeeze(glcm)[1:, 1:]

我們準備檢查通過兩種方法獲得的 GLCM 是否相同:


glcm_crop = glcm_wrapper(crop_img)

glcm_mask = glcm_wrapper(mask_img)


print(np.array_equal(glcm_crop, glcm_mask))

如果您運行上面的所有代碼片段,您將獲得True.


重要的是要注意,如果將參數(shù)傳遞normed=True給greycomatrix,生成的 GLCM 是不同的。如果要對矩陣進行歸一化,則必須在刪除第一行和第一列后對 GLCM 進行歸一化。試試這個說服自己:


glcm_crop = glcm_crop/glcm_crop.sum()

glcm_mask = glcm_mask/glcm_mask.sum()

print(np.allclose(glcm_crop, glcm_mask))


查看完整回答
反對 回復 2022-12-27
  • 1 回答
  • 0 關(guān)注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號