在我的图像上应用 kernel2d R 代码后,我遇到了一个奇怪的问题。生成的密度图移动了几个像素(向上和右侧)。我加载我的图像,对其设置阈值(直到现在图像完全重叠)。然后我生成一个 > 0 的像素列表。
ListPosPixels=which(ThIv>0, arr.ind = TRUE);
它用作 kernel2d 函数的输入。w 和 height 设置为输入图像的尺寸。对于 h 我选择了不同的值,但它们似乎与班次无关。
res <- kernel2d(as.points(ListPosPixels), poly=cbind(c(0, d[1], d[1], 0),
c(0, 0, d[2], d[2])),
h0=h, nx=w, ny=height);
然后将图像存储为 png
png(paste('KernelDensity.png', sep=''), width=w, height=height)
par(mar=c(0,0,0,0))
contour(res, add=F, drawlabels=F, col='green',xaxt='n', yaxt='n')
有什么提示吗?谢谢!都林
完整代码示例:
library(EBImage)
require(splancs)
options(max.contour.segments=50000);
ThIv<-readImage('shiftedInput.jpg');
ThIv<-flip(ThIv); #due to plotting
ListPosPixels=which(ThIv>0, arr.ind = TRUE);
d=dim(ThIv);
w <-d[1];
height <- d[2];
res <- kernel2d(as.points(ListPosPixels), poly=cbind(c(0, d[1], d[1], 0),
c(0, 0, d[2], d[2])),
h0=20, nx=w, ny=height);
png(paste('Kerneldensity.png', sep=''), width=w, height=height)
par(mar=c(0,0,0,0))
contour(res, add=F, drawlabels=F, col='green',xaxt='n', yaxt='n')
dev.off()