【问题标题】:Removing Border from the Image从图像中删除边框
【发布时间】:2020-11-12 08:15:12
【问题描述】:

我有一组像下面这样的图像,其中每个图像都由实际的图像部分组成,周围有不同大小的黑色边框。我的目标是删除这些边框并仅提取图像,以后可以将其用于其他任务。

我尝试使用精明的边缘检测器来识别边界并仅从中获取图像,但是它没有按预期工作。

我也尝试过下面其他帖子中提到的技术,但这些在我的情况下也不起作用。

In [1]: from PIL import Image, ImageChops

In [3]: im = Image.open('iI3ZE.jpg')

In [4]: def trim(im):
   ...:         bg = Image.new(im.mode, im.size, im.getpixel((0,0)))
   ...:         diff = ImageChops.difference(im, bg)
   ...:         diff = ImageChops.add(diff, diff, 2.0, -100)
   ...:         bbox = diff.getbbox()
   ...:         if bbox:
   ...:                 return im.crop(bbox)

上述查询的任何线索都会有所帮助。

【问题讨论】:

  • 如果它总是在同一个位置,那么只需使用new_im = im[y:y+h, x:x+w] 裁剪图像,其中 x,y 是您想要的部分的左上角,w,h 是尺寸。跨度>

标签: python opencv image-processing


【解决方案1】:

这是 Python/OpenCV 中的一种方法。将图像读取为灰度。然后阈值为零,因为背景是黑色的。然后应用形态打开来清理它。然后找到轮廓并获得最大的边界框。然后使用边界框进行裁剪。

输入:

import cv2
import numpy as np

# load image
img = cv2.imread("sonar.png", cv2.IMREAD_GRAYSCALE)

# threshold
thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY)[1]

# apply open morphology
#kernel = np.ones((5,5), np.uint8)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (15,15))
morph = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
 
# get bounding box coordinates from largest external contour
contours = cv2.findContours(morph, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = contours[0] if len(contours) == 2 else contours[1]
big_contour = max(contours, key=cv2.contourArea)
x,y,w,h = cv2.boundingRect(big_contour)

# crop image contour image
result = img.copy()
result = result[y:y+h, x:x+w]

# write result to disk
cv2.imwrite("sonar_thresh.jpg", thresh)
cv2.imwrite("sonar_morph.jpg", morph)
cv2.imwrite("sonar_cropped.png", result)

# display results
cv2.imshow("THRESH", thresh)
cv2.imshow("MORPH", morph)
cv2.imshow("CROPPED", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

阈值图像:

形态清洁图像:

裁剪图像:

【讨论】:

  • 非常感谢您的投入,非常感谢,您是否可以在Matlab中提供一些类似的sn-p
  • 对不起,我不知道 Matlab。
猜你喜欢
  • 2013-09-05
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
相关资源
最近更新 更多