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
相关产品推荐
相关产品推荐

