gpt4 book ai didi

java - 图像大小调整双线性插值和最近邻

转载 作者:行者123 更新时间:2023-12-02 01:05:57 24 4
gpt4 key购买 nike

我目前在重新缩放和图像算法方面遇到问题。我目前想实现双线性插值和最近邻。我理解它们在概念上是如何工作的,但是,我似乎无法将其记录到代码中。我仍然停留在最近邻居上我在下面为其编写了一些伪代码(根据我所知道的):

    Resizing Images: Nearest Neighbour
Use a loop:for j=0 to Yb-1
for i=0 to Xb-1
for c=0 to 2
(floor) y=j*Ya/Yb
(floor) x=i*Xa/Xb
Ib[j][i][c] = Ia[y][x][c]

我的原始数据集(我在其中获取数据量)存储在 [x][y][z] 和 (x, y, z) 的 3D 数组中。我分别读取每个像素并可以计算使用 java 中的 Color.color 为每个像素设置颜色。然而,我需要知道如何获取每个像素位置 x 和 y (x,y) 的颜色 (c = [0,1,2] ),不包括 z(对于一个 View ),以便为每个新像素转换 1 个旧像素像素到包含新宽度和高度的新数据集中。上面翻译的大部分代码都是我用 Java 编写的。但我仍然不明白如何完成一个有效的实现。

提前致谢😊

最佳答案

我对java不是很熟悉。但这里是 python 的工作代码。

import cv2
import numpy as np

img = cv2.imread("image.png")
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

scaleX = 0.5
scaleY = 0.5

newImg = np.zeros((int(img.shape[0]*scaleX),int(img.shape[1]*scaleY))).astype(np.uint8)

for y in range(newImg.shape[0]):
for x in range(newImg.shape[1]):
samplex = x/scaleX
sampley = y/scaleY
dx = samplex - np.floor(samplex)
dy = sampley - np.floor(sampley)

val = img[int(sampley-dy),int(samplex-dx)]*(1-dx)*(1-dy)
val += img[int(sampley + 1 - dy),int(samplex-dx)]*(1-dx)*(dy)
val += img[int(sampley-dy),int(samplex + 1 - dx)]*(dx)*(1-dy)
val += img[int(sampley + 1 -dy),int(samplex + 1 - dx)]*(dx)*(dy)

newImg[y,x] = val.astype(np.uint8)


cv2.imshow("img",newImg)
cv2.waitKey(0)

您只需在 for 和 x for 循环中再添加一个 for 循环即可考虑 channel 。

关于java - 图像大小调整双线性插值和最近邻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60064998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com