b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Yuchao_research

电脑杂谈  发布时间:2020-06-14 21:26:23  来源:网络整理

r语言 运行apriori算法_c语言图像旋转算法原理_r语言图像识别算法

假设我们有一个灰度图像(128×128或128×128像素). 我们可以使用矩阵来表示该图像. 如果我们有彩像,请使用R中的readJEPG函数读取图像r语言图像识别算法,以发现它是由三维阵列(我们经常说的三种原色: 红色,绿色,蓝色)组成的. 它具有三个矩阵,大小与图像相同,每个矩阵代表包括RGB色标的颜色值,每个像素由0-255的整数表示. 接下来,我们可以通过SVD分解矩阵,然后通过消除小的奇异值,我们可以近似矩阵,选择k的值进行矩阵逼近,即压缩原始矩阵r语言图像识别算法,并获得保留了大部分矩阵的压缩矩阵. 原始矩阵信息. 注意: 绘制奇异值图像可能有助于确定重要性显着下降的地方

假设我们选择了k的值,k =我们希望保留的奇异值的数量,我们可以通过使用SVD扩展A来生成一个新的图像矩阵(仅前k个奇异值) . 如果要使用彩像,请分别重新组合R,G和B矩阵.

r语言图像识别算法_r语言 运行apriori算法_c语言图像旋转算法原理

如果要基于原始彩像获取灰度图像,则可以使用: New.img = 0.299 * r + 0.587 * g + 0.114 * bNew.img = 0.299 * r + 0.587 * g + 0.114 * bNew.img = 0.299 ∗ r + 0.587 ∗ g + 0.114 ∗ b公式处理.

如果您不了解SVD(奇异值分解),可以参考我的另一篇有关SVD原理的文章: SVD与PCA的详细原理和

r语言图像识别算法_r语言 运行apriori算法_c语言图像旋转算法原理

library(RSpectra)
library(jpeg)
library(animation)
##灰度图片生成
png("new_picd.png")
r <- 0.299
g <- 0.587
b <- 0.114
pic <- readJPEG(sprintf("sam_d.jpg", i))
R <- pic[,,1]
G <- pic[,,2]
B <- pic[,,3]
#通过灰度进行图像转化
new_pic <- r*R + g*G + b*B   
#将转化后的灰度图导出为.jpg
writeJPEG(new_pic, sprintf("new_picd.jpg", i))   
dev.off()
##图像压缩
#设置读取路径
setwd("/Users/tyc_219/Desktop/tex")
#读取图片
wyz <- readJPEG("wyz.jpg")
#可以看出图片结构为三维矩阵
str(wyz)
#设置压缩向量
k <- seq(10, 200, 10)
png("Compresspicsd.png")
compress_jpg <- function(pic, k, plots = TRUE)
{
  #如果压缩向量k里面的最小值小于等于1,报错
  if(min(k) <= 1) stop("The minimum of the vector must larger than 1!")
  #svds()函数在给定的mxn矩阵A的前提下,可以找到其最大的k奇异值和相应的奇异向量
  svd_message <- function(jpg, i)
  {
    r <- svds(jpg[,,1], i)
    g <- svds(jpg[,,2], i)
    b <- svds(jpg[,,3], i)
    return(list(r = r, g = g, b = b))
  }
  
  pic <- svd_message(pic, 200)
  if(plots == TRUE){
    sigma <- pic$r$d
    plot(1:length(sigma), sigma, xlab="i-th sigma", ylab="sigma", main="Singular Values")
    plot(1:length(sigma), cumsum(sigma)/sum(sigma), main="Cumulative Percent of Total Sigmas")
  }
  #返回在不同取值下的压缩后图片,取值越小图片约模糊
  for(m in k)
  {
    r <- pic$r$u[, 1:m] %*% diag(pic$r$d[1:m]) %*% t(pic$r$v[,1:m])
    g <- pic$g$u[, 1:m] %*% diag(pic$g$d[1:m]) %*% t(pic$g$v[,1:m])
    b <- pic$b$u[, 1:m] %*% diag(pic$b$d[1:m]) %*% t(pic$b$v[,1:m])
    pics <- array(0, c(nrow(r), ncol(r), 3))
    pics[,,1] <- r
    pics[,,2] <- g
    pics[,,3] <- b
    writeJPEG(pics, sprintf("picture_svd_d.png", m))
  }
}
compress_jpg(wyz, k, plots = TRUE)
dev.off()
#设置生成的压缩图片路径,使用im.convert函数进行GIF图生成
bm.files <- sprintf("picture_svd_d.png", k)
im.convert(files = bm.files, output = "Compresspics.gif")

我在这里用过吴彦祖的照片:

r语言图像识别算法_c语言图像旋转算法原理_r语言 运行apriori算法

在这里插入图片描述

灰度图像如下:

r语言 运行apriori算法_c语言图像旋转算法原理_r语言图像识别算法

在这里插入图片描述

可以通过上述函数绘制奇异值函数图:

在这里插入图片描述

生成的GIF图像如下. 从GIF图像中很容易看出奇异值数量对压缩图像清晰度的影响:

在这里插入图片描述

我的学习受到限制. 如果有错误,我仍然希望纠正它. 如果需要转载,请注明出处. 谢谢!


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-245444-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...