이미지 스무더
3 x 3
의 필터입니다. 세포의 주변 세포 중 하나 이상이 존재하지 않는 경우 평균(즉, 빨간색 평활기의 4개 세포의 평균)에서 고려하지 않습니다.이미지의 회색조를 나타내는
m x n
정수 행렬img
이 주어지면 이미지의 각 셀에 smoother를 적용한 후 이미지를 반환합니다.예 1:
입력: img = [[1,1,1],[1,0,1],[1,1,1]]
출력: [[0,0,0],[0,0,0],[0,0,0]]
설명:
포인트 (0,0), (0,2), (2,0), (2,2): floor(3/4) = floor(0.75) = 0
포인트 (0,1), (1,0), (1,2), (2,1): floor(5/6) = floor(0.83333333) = 0
점 (1,1)의 경우: floor(8/9) = floor(0.88888889) = 0
예 2:
입력: img = [[100,200,100],[200,50,200],[100,200,100]]
출력: [[137,141,137],[141,138,141],[137,141,137]]
설명:
포인트 (0,0), (0,2), (2,0), (2,2): floor((100+200+200+50)/4) = floor(137.5) = 137
포인트 (0,1), (1,0), (1,2), (2,1): floor((200+200+50+200+100+100)/6) = floor(141.666667) = 141
점 (1,1)의 경우: floor((50+200+200+200+200+100+100+100+100)/9) = floor(138.888889) = 138
제약:
m == img.length
n == img[i].length
1 <= m, n <= 200
0 <= img[i][j] <= 255
해결책:
class Solution:
def getNeighbors(self, row, col, m, n):
neighbors = []
for i in range(row - 1, row + 2):
for j in range(col - 1, col + 2):
if i == row and j == col:
continue
if i < 0 or i >= m:
continue
if j < 0 or j >= n:
continue
neighbors.append((i, j))
return neighbors
def imageSmoother(self, img: List[List[int]]) -> List[List[int]]:
imgcp = [row[:] for row in img]
m = len(img)
n = len(img[0])
for i in range(m):
for j in range(n):
nb = self.getNeighbors(i, j, m, n)
total = sum([imgcp[a][b] for a, b in nb]) + imgcp[i][j]
num = len(nb) + 1
img[i][j] = int(total/num)
return img
Reference
이 문제에 관하여(이미지 스무더), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/image-smoother-5d77텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)