2017-12-28 3 views
0

RGB 이미지 3d 배열을 가지고 있으며, np.delete를 적용 할 때 2 차원 위치로 식별 된 특정 픽셀을 삭제하고 싶습니다. 출력은 다시 3d 배열로 바꿀 수 없습니다 (예 :Numpy 3d 배열에서 2 차원 인덱스를 삭제합니다

).
indices = [(23, 21),(24, 22),(23, 23),(23, 24),(23, 25),(22, 26)] 

I = np.empty(ImageRGB.shape()) 

I = np.delete(ImageRGB,obj=indices)  

문제점 : 'I'는, 제 3 색 의한 채널로 다시 재 성형 될 수 없다. 나는 그것의 색상 채널

+0

삭제할 수 없습니다. 그러나 픽셀의 색을 바꿀 수 있습니다 ... – MaxU

답변

0

np.delete와 인덱스에있는 요소를 삭제하는 방법을

실제로 배열의 섹션을 제거하기위한 것, 그러나 이것은 당신이 이미지의 픽셀을 삭제할 때 수행 할 작업을 아마 아닙니다. 대신 이러한 픽셀을 검정색 ([0, 0, 0]) 또는 흰색 (가능성이있는 이미지의 인코딩 방식에 따라 [1, 1, 1] 또는 [255, 255, 255]) 일 수있는 "배경"값으로 설정하려고합니다.

NumPy의 색인 생성을 사용하여 값을 설정할 수 있습니다. 예를 들면 다음과 같습니다.

image_rgb = np.random.rand(30, 30, 3) 
indices = [(23, 21),(24, 22),(23, 23),(23, 24),(23, 25),(22, 26)] 

i, j = zip(*indices) 
image_rgb[i, j] = [0, 0, 0] # set values to black 
+0

왜 '인덱스'가 아닌'* 인덱스 '를 사용하여'zip'을 호출 했습니까? – ninesalt

+0

이미지에서 솔기를 삭제하고 싶습니다. 회색 음영 이미지에서 방법이 작동하고 있는데, 솔기와 모양을 (i-1, j)와 같이 삭제하지만 RGB에서는 색상 채널을 삭제할 수 없습니다. –

+0

@ Swailem95 인덱스를 압축 해제하지 않으면 작동하지 않습니다. – jakevdp

0

나는 해결책을 시도하고 잘 동작합니다. np.delet을 모두 위에 적용한 다음 이미지를 다시 결합합니다.

감사합니다.

관련 문제