日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

morphology.remove_small_objects输入数组的数据类型对结果的影响

發(fā)布時間:2024/1/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 morphology.remove_small_objects输入数组的数据类型对结果的影响 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

當(dāng)ar數(shù)據(jù)類型為int時:

當(dāng)ar數(shù)據(jù)類型為bool時:

總結(jié):


skimage中morphology.remove_small_objects 用以去除小于指定size的小物體(Remove objects smaller than the specified size).

skimage.morphology.remove_small_objects(ar,?min_size=64,?connectivity=1,?in_place=False,?*,?out=None)

官方文檔指出:

Expects ar to be an array with labeled objects, and removes objects smaller than min_size. If?ar?is bool, the image is first labeled. This leads to potentially different behavior for bool and 0-and-1 arrays.

ar可以是int型,也可以是bool型。但是經(jīng)本人試驗,當(dāng)ar分別為這兩種數(shù)據(jù)類型時,結(jié)果差異還是比較明顯的。

當(dāng)ar數(shù)據(jù)類型為int時

創(chuàng)建img_1和img_2兩個數(shù)組。數(shù)組中0為背景,非0元素為objects。img_1中包含背景0和object 67;img_2中包含背景0、object67、object1、object2。使用morphology.remove_small_objects分別處理img_1和img_2,以除去size小于3的objects。

import numpy as np from skimage import morphology img_1 = np.array([[0,0,0,67,67,67],[0,67,0,67,0,67],[0,0,0,0,67,0],[0,67,67,0,0,67],]) img_2 = np.array([[0,0,0,67,67,67],[0,1,0,67,0,67],[0,0,0,0,67,0],[0,67,2,0,0,67],]) img_1_small_removed = morphology.remove_small_objects(img_1,min_size=3,connectivity=1) print('img_1_small_removed =') print(img_1_small_removed) img_2_small_removed = morphology.remove_small_objects(img_2,min_size=3,connectivity=1) print('img_2_small_removed =') print(img_2_small_removed)

結(jié)果如下 :

img_1_small_removed = [[ 0 0 0 67 67 67][ 0 67 0 67 0 67][ 0 0 0 0 67 0][ 0 67 67 0 0 67]] img_2_small_removed = [[ 0 0 0 67 67 67][ 0 0 0 67 0 67][ 0 0 0 0 67 0][ 0 67 0 0 0 67]]

由結(jié)果可見,img_1中第二行第二列的孤立object 67未被去除,但是,img_2中第二行第二列孤立的object 1被去除了。此外,img_2中第四行第三列的object 2也被去除了,注意object 2周圍的元素并非都是0,其左側(cè)存在object 67。

由上例可見,當(dāng)ar數(shù)據(jù)類型為int時,morphology.remove_small_objects去除的是數(shù)組中個數(shù)少于min_size的objects(img_2中的object 1和object 2)。無論被去除的object周圍元素是0還是其他object,只要該object在數(shù)組中的個數(shù)少于min_size,它就要被remove。img_1中第二行第二列元素是孤立的,其周圍元素都是背景0,但是該元素所屬的object 67在數(shù)組中的總量是大于min_size的,所以即便該元素是孤立的,其也未被remove。

當(dāng)ar數(shù)據(jù)類型為bool時

首先,將img_1和img_2數(shù)據(jù)類型轉(zhuǎn)化為bool,大于0的元素為True,等于0的元素為False。即之前的objects是現(xiàn)在的True,之前的背景0為現(xiàn)在的False。

然后,使用morphology.remove_small_objects分別處理img_1_bools和img_2_bools,以除去size小于3的objects。

import numpy as np from skimage import morphology img_1 = np.array([[0,0,0,67,67,67],[0,67,0,67,0,67],[0,0,0,0,67,0],[0,67,67,0,0,67],]) img_2 = np.array([[0,0,0,67,67,67],[0,1,0,67,0,67],[0,0,0,0,67,0],[0,67,2,0,0,67],]) img_1_bools = img_1 > 0 img_2_bools = img_2 > 0 img_1_small_removed = morphology.remove_small_objects(img_1_bools,min_size=3,connectivity=1) img_2_small_removed = morphology.remove_small_objects(img_2_bools,min_size=3,connectivity=1) print('img_1_bools =') print(img_1_bools) print('img_1_small_removed =') print(img_1_small_removed) print('img_2_bools =') print(img_2_bools) print('img_2_small_removed =') print(img_2_small_removed)

?結(jié)果如下:

img_1_bools = [[False False False True True True][False True False True False True][False False False False True False][False True True False False True]] img_1_small_removed = [[False False False True True True][False False False True False True][False False False False False False][False False False False False False]] img_2_bools = [[False False False True True True][False True False True False True][False False False False True False][False True True False False True]] img_2_small_removed = [[False False False True True True][False False False True False True][False False False False False False][False False False False False False]]

由于img_1_bools和img_2_bools兩個數(shù)組一模一樣,所以對二者處理后結(jié)果也一模一樣。

img_1_bools中第二行第二列的True被移除了(對應(yīng)img_1中同位置的67),第三行倒數(shù)第二列的True被移除了(對應(yīng)img_1中同位置的67),第四行第二列和第三列的True被移除了(對應(yīng)img_1中同位置的67和67),第四行最后一列的True被移除了(對應(yīng)img_1中同位置的67)。

img_2_bools中第二行第二列的True被移除了(對應(yīng)img_2中同位置的1),第三行倒數(shù)第二列的True被移除了(對應(yīng)img_2中同位置的67),第四行第二列和第三列的True被移除了(對應(yīng)img_2中同位置的67和2),第四行最后一列的True被移除了(對應(yīng)img_2中同位置的67)。

注意:在img_1_bools中元素True的數(shù)量是遠(yuǎn)多于min_size的,但是孤立的True們都被remove了。與之對應(yīng)的,數(shù)組數(shù)據(jù)類型為int時,孤立的object 67并未被remove。

總結(jié):

當(dāng)輸入數(shù)組ar的數(shù)據(jù)類型為int時,morphology.remove_small_objects除去的是數(shù)組中元素總個數(shù)少于min_size的objects(每種值代表一種object),無論被remove的object是否孤立。

當(dāng)輸入數(shù)組ar的數(shù)據(jù)類型為bool時,morphology.remove_small_objects除去的是數(shù)組中孤立的,size小于min_size的True們(這里的True們有可能在int型數(shù)組中對應(yīng)不同的值,即對應(yīng)不同的objects)。


總結(jié)

以上是生活随笔為你收集整理的morphology.remove_small_objects输入数组的数据类型对结果的影响的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。