Home  >  Article  >  Backend Development  >  How to remove residuals from images using Python

How to remove residuals from images using Python

王林
王林forward
2024-02-06 08:30:12870browse

如何使用 Python 去除图像中的残差

Question content

Image1 contains a rectangle with residuals

and Image2 represent the desired result.

I want to get the same result as Image2 using Image1 in Python, but I'm not sure if it's possible, nor the necessary methods.

I tried using the image's transparency to remove it, but I'm not sure if that's possible.


Correct Answer


Your "residual" image is less saturated than the "core" image, so You can combine "residual" with "core", see Wikipedia hsv article.

Using imagemagick, I can convert your image to hsv color space, discard the h and v channels, and then threshold the saturation channel to find the most saturated area as follows:

magick input.png -colorspace hsv -separate -delete 0,2 -threshold 75% rssult.png

Using python and opencv, roughly as follows:

import cv2 as cv
import numpy as np

# Load image
im = cv.imread(YOURIMAGE)

# Convert to HSV colourspace and split channels
hsv = cv.cvtColor(im, cv.COLOR_BGR2HSV)
H, S, V = cv.split(hsv)

# Make mask of areas of high saturation 
coreMask = S > 200

# Scale up from range 0..1 to range 0..255 and save as PNG
cv.imwrite('result.png', coreMask * 255)

If I split the image into h, s and v components and plot h (hue) on the left, s (saturation) in the middle and v (value, i.e. brightness) on the right, you can Center s (saturation) image, "core" shape with higher pixel values, "residual" with lower pixel values:

The above is the detailed content of How to remove residuals from images using Python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete