R语言:中值滤波 (Median Filter)
图像处理 - 中值滤波
Ref: 中值滤波基本介绍
简单基于双循环的R语言代码:
MedianFilter <- function(mat,filterSize = 3){
rowNum <- nrow(mat)
colNum <- ncol(mat)
margin <- (filterSize-1) %/% 2
for(i in (1+margin):(rowNum-margin)){
for(j in (1+margin):(colNum-margin)){
seq_ <- as.numeric(mat[(i - margin):(i + margin), (j - margin):(j + margin)])
mat[i,j] = median(seq_)
}
}
return(mat)
}
传入
mat,一个二维矩阵。支持设定filterSize,即滤波器的大小,一般设置为奇数。返回一个经过滤波处理后的矩阵。
一个简单的案例
图片为个人数据私有,不共享及公开 (以下图像为医学分子图像,Imaging Mass Cytometry, IMC 技术获得)
原始图像


处理后图像
Discussion
上述基于双循环是最简单的算法,计算效率上有很大的提升空间。其他问题欢迎留言or私信讨论。
文章介绍了如何在R语言中使用中值滤波方法进行图像处理,提供了一个基于双循环的简单代码示例,该代码对输入的二维矩阵(图像)进行滤波处理。尽管这种方法计算效率不高,但展示了基础的滤波过程。文章还提到处理前后图像的效果,并邀请读者讨论可能的优化方案。
96

被折叠的 条评论
为什么被折叠?



