Я хочу предварительно обработать изображение
, чтобы сохранить только внутренний прямоугольный сегмент (т.е. удалить окружающий фон). Но я не получаю правильный результат, который был показан как
.
для меня.
Код довольно прост:
def labelim(img):
#labeling image
gray = rgb2gray(img) #translate rgb to gray
val = filters.threshold_local(gray,5)
mask = gray > val
clean_border = segmentation.clear_border(mask)
labeled = label(clean_border)
signle_labeled = np.where(labeled == 0,labeled, 1)#ensure all assigned label return as 1.
return single_labeled
def crop_img(img, labeled):
cropped_images = []
pad = 20
for region in regionprops(labeled):
if region.area < 2000:
continue
minr,minc,maxr,maxc = region.bbox
cropped_images.append(gray[minr-pad:maxr+pad, minc-pad:maxc+pad])
for c, cropped_image in enumerate(cropped_images):
cropim = cropped_image
return cropim
labeled = labelim(img)
cropped_image = crop_img(img, labeled)
Тестовый код работает для другого из моих изображений, но не работает для большинства из них. Спасибо за любую помощь / предложение.