如何在R语言中实现多帧图像数组90度旋转?
图像栈旋转问题修正
你的代码存在两个关键错误,导致旋转效果不符合预期:
- 每个切片经
rot90旋转后,维度会互换(原417×600的切片会变成600×417),但你重组数组时仍沿用了原维度417, 600,直接造成图像变形 - 重组数组时第三维长度写错,原图像栈是30层,你误写为
3
修正后的代码如下:
# 将图像栈转为列表 lst = lapply(seq(dim(comb)[3]), function(x) comb[ , , x]) # 旋转每个切片 lst = lapply(lst, function(x) rot90(x, 1)) # 重组为数组:使用旋转后的切片维度,第三维保持原30层 re = array(as.numeric(unlist(lst)), dim = c(600, 417, 30))
另外,也可以不转列表,直接用数组操作更高效:
# 对每个切片旋转,指定按第三维操作 re = apply(comb, 3, function(x) rot90(x, 1)) # 调整维度顺序:apply会将第三维转为第一维,需重新排列回正确顺序 re = aperm(re, c(2, 3, 1))
内容的提问来源于stack exchange,提问作者B84
相关产品推荐
相关产品推荐

