You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言图像转置问题:矩阵变换导致数字5图像镜像求助

解决数字5图像镜像显示的问题

我之前也踩过R中image()函数的这个坑!出现镜像的核心原因是两个默认行为的冲突:一是R的image()函数默认从底部开始渲染矩阵的行,而我们日常看图像是从上到下的;二是你把数据框行转成矩阵时,列的顺序刚好和图像的实际像素排布相反,最终导致了左右+上下的镜像效果。

修正后的绘图函数

plotimage <- function(df, n, imageTitle) {
  # 提取目标行的像素值并转为28x28矩阵
  matrx <- matrix(unlist(df[n, 1:784]), byrow = TRUE, nrow = 28)
  # 同时修正上下颠倒和左右镜像:反转行顺序+反转列顺序
  corrected_matrx <- matrx[nrow(matrx):1, ncol(matrx):1]
  # 绘制图像并添加标题
  image(col = gray(0:255/255), z = corrected_matrx, main = imageTitle)
}

关键修改点解释

  • 反转行顺序:matrx[nrow(matrx):1, ] —— 把矩阵的行从最后一行到第一行重新排列,让image()从底部绘制的内容对应原图像的顶部,解决上下颠倒的问题。
  • 反转列顺序:[, ncol(matrx):1] —— 把矩阵的列从最后一列到第一列重新排列,修正左右镜像的问题。

你可以直接调用修改后的函数测试:

plotimage(image5, 1600,"Image of 5")

如果实际测试中只有上下颠倒没有左右镜像,只保留行反转的逻辑就行——不过根据你的描述,两个反转结合应该就能得到正常显示的数字5了。

内容的提问来源于stack exchange,提问作者Fran Martinez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:25:25