Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在R中使用clump函数去除像素簇

如何在R中使用clump函数去除像素簇
EN

Stack Overflow用户
提问于 2020-09-14 04:22:09
回答 1查看 207关注 0票数 0

我想删除形成一个大簇的像素,只保留小簇进行分析(意味着获得像素数量和位置)。首先,我应用滤镜将所有值小于0.66的像素涂成白色。然后我在R中使用函数clump()。模型可以工作,但我不能只删除大的集群。我不明白clump函数是如何工作的。

初始图像:

结果图像: plot_r是值小于0.66的像素变为0的图像。plot_rc是clump()函数之后的结果。正如所观察到的,我不能只删除大的像素集群(在图像plot_r的顶部)。我改变了值(代码中的700),但没有更好,怎么办?

代码如下:

代码语言:javascript
运行
AI代码解释
复制
library(magick)
library(pixmap)
library(raster)
library(igraph)

f <- https://ask.qcloudimg.com/http-save/yehe-900000/555d1c7cbc97a5a9a8a5df4f083e9d3f.jpeg
x <- image_read(f)
x <- image_convert(x, format = "pgm", depth = 8)

# Save the PGM file
f <- tempfile(fileext = ".pgm")
image_write(x, path = f, format = "pgm")

# Read in the PGM file
picture <- read.pnm(file = f, cellres = 1)
str(picture)
picture@size
mat <- picture@grey
mat[mat<0.66] <- 0; x

##############################################################
##Remove clumps of pixels in R using package Raster and igraph
#Detect clumps (patches) of connected cells
r <-raster(mat)
rc <- clump(r) 

#extract IDs of clumps according to some criteria
clump9 = data.frame(freq(rc))
#remove clump observations with frequency smaller/larger than N
clump9 = clump9[ ! clump9$count > 700, ]
# record IDs from clumps which met the criteria in previous step
clump9 = as.vector(clump9$value) 
#replace cells with IDs which do not belong to the group of interest 
rc[rc != clump9[1] & rc != clump9[2]] = NA 

# converting rasterlayer to matrix
n <- as.matrix(r)
m <- as.matrix(rc)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-14 07:44:42

也许是这样的

代码语言:javascript
运行
AI代码解释
复制
library(raster)
library(igraph)

将你的方法简化一点

代码语言:javascript
运行
AI代码解释
复制
f <- "https://i.stack.imgur.com/2CjCh.jpg"
b <- brick(f)
x <- sum(b)
r <- x > 450    
rc <- clump(r) 
f <- freq(rc, useNA="no")

将聚块替换为其组成的像元数,然后将较大的像元(此处超过100个像元)设置为NA,并使用结果来掩膜原始栅格

代码语言:javascript
运行
AI代码解释
复制
rs <- subs(rc, data.frame(f))
rsc <- reclassify(rs, cbind(100,Inf,NA))    
m <- mask(b, rsc)
plotRGB(m)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63878069

复制
相关文章
TwoSampleMR包实战教程之去除连锁不平衡(LD)
在做MR研究时,我们有一步非常重要,那就是去除存在连锁不平衡的IV。连锁不平衡主要是使用两个参数r2和kb来衡量:
生信与临床
2022/08/21
5.1K1
使用R中merge()函数合并数据[通俗易懂]
在R中可以使用merge()函数去合并数据框,其强大之处在于在两个不同的数据框中标识共同的列或行。
全栈程序员站长
2022/07/01
5.4K0
使用R中merge()函数合并数据[通俗易懂]
Linux去除\r(Window中编辑的文本)
在 Window 上编辑的脚本,上传到 Linux 上执行时一直报错,报错里有个 “\r”,每行后面都加了 “\r”,导致无法执行。
Li_XiaoJin
2022/06/10
3.4K0
Linux去除\r(Window中编辑的文本)
TwoSampleMR包实战教程之读取暴露文件
在上期内容中,我和大家简单介绍的TwoSampleMR这个R包的主要功能和安装方法,今天我将为大家讲解使用该包进行孟德尔随机化研究的第一步------读取暴露文件。
生信与临床
2022/08/21
7.4K0
TwoSampleMR包实战教程之读取暴露文件
如何使用几何画板画函数图像,如极坐标函数图像?
1、点击[绘图] 2、点击[网格样式] 3、点击[极坐标网格] 4、点击[绘图] 5、点击[绘制新函数] 6、点击[3] 7、点击[函数] 8、点击[cos] 9、点击[θ] 10、点击[确定] 11、点击[是]
裴来凡
2022/05/28
1.3K0
如何使用几何画板画函数图像,如极坐标函数图像?
R 去除无用的levels
有的时候处理完数据后,数据变少了,但是factor的levels却没变。比如说有一个数据:
生信编程日常
2020/06/15
1.7K0
R 去除无用的levels
R包“ieugwasr“教程---SNP信息查询
在孟德尔随机化研究中,我们常常会碰到SNP没有rsid的情况,这个时候需要我们把rsid添加上,如果SNP的个数不是很多的话,我们可以使用variants_chrpos()函数:
生信与临床
2022/08/21
5.6K0
R包“ieugwasr“教程---SNP信息查询
绑定事件中 如可控制函数的执行次数
var flag = true; function onlyOne() { if(flag) { "这里是要执行的代码"; } flag = false//该方法是控制函数仅执行一次 因为flag是全局变量 onlyOne()函数执行一次后flag就变成false了 函数就执行不了了
大当家
2018/06/28
2.3K0
JavaScript 去除空格函数
return strToTrim.replace(/^\s+|\s+$/g,"")
大江小浪
2018/07/24
1K0
如何在Redhat中配置R环境
R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。本文档主要讲述如何在Redhat中使用源码方式编译安装及配置R的环境。
Fayson
2018/03/29
3K0
如何在Redhat中配置R环境
Oracle聚簇表使用方针
要针对应用的要求来考虑使用聚簇的优缺点。例如,你需要确定连接语句的性能提升是否超过了修改聚簇值的性能下降,你可能还需要做实验比较聚簇和单独存储所花费的处理时间。
用户1148526
2019/05/25
5480
R中的sweep函数
base包中的sweep函数是处理统计量的工具,一般可以结合apply()函数来使用。当我们我们需要将apply()统计出来的统计量代回原数据集去做相应操作的时候就可以用到sweep()。
生信交流平台
2022/09/21
2.7K0
R中的sweep函数
如何在 Bash 中编写函数
在编程时,实际上是在定义要由计算机执行的 过程(procedure)或 例程(routine)。一个简单的类比是将计算机编程与烤面包进行比较:你一次列出了要组建工作环境的配料,然后列出了烤面包所必须采取的步骤。在编程和烘烤中,必须以不同的间隔重复执行某些步骤。例如,在烤面包中,这可能是酵母培养的过程:
用户1880875
2021/09/16
1.9K0
如何在 Bash 中编写函数
在编程时,实际上是在定义要由计算机执行的 过程(procedure)或 例程(routine)。一个简单的类比是将计算机编程与烤面包进行比较:你一次列出了要组建工作环境的配料,然后列出了烤面包所必须采取的步骤。在编程和烘烤中,必须以不同的间隔重复执行某些步骤。例如,在烤面包中,这可能是酵母培养的过程:
用户1880875
2021/09/15
1.9K0
如何在 TypeScript 中使用函数
英文 | https://www.digitalocean.com/community/tutorials/how-to-use-functions-in-typescript
winty
2022/04/08
15.1K0
如何在 TypeScript 中使用函数
去除文件中<feff>
最近生成的文件中出现了<feff>乱码,而且单个文件中出现不止一次,在vim中打该文件显示<feff>,而在idea中则显示一个“-”,对数据处理造成了极大的困扰,通过使用其它编辑器打开发现,Windows记事本不出现乱码,notepad++不出现乱码,那么极有可能是该乱码位置写了一些不可见的标志字符。
休辞醉倒
2019/07/25
4.7K0
TCP/IP协议簇中ARP协议
在《IP协议》中我们讲解了IP地址相关内容,IP协议中包含了目的IP地址和源IP地址,但是当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。设备驱动程序从不检查IP数据报中的目的IP地址。
网络工程师笔记
2021/05/17
9090
TCP/IP协议簇中ARP协议
如何在R中创建日历热图
首先,我们运行Paul Bleicher创建的calendarHeat函数以显示日历热图。 其次,我们创建一些随机的时间序列数据。 最后,我们在两个调色板中绘制时间序列。
用户1359560
2020/04/01
4.6K0
如何在R中创建日历热图
如何在R中绘制热力地图
本文介绍了如何利用R语言中的maps包和mapdata包绘制地图,并通过热力地图展示数据分布情况。首先,通过map()函数创建地图对象,并获取每个区域的名字以及顺序。然后,在每个区域的名字和顺序后面,加上需要展示的数据以及经纬度。接着,根据数据的大小设置每个区域的颜色深浅,以区分不同的区域。最后,给地图加上地名标记,并添加热力地图元素。
Erin
2018/01/09
3.3K0
如何在R中绘制热力地图
点击加载更多

相似问题

如何获取R中像素簇的大小

119

如何获取R中微小簇(几个像素)的大小

122

imagemagick移除像素簇

11

如何去除R中DEM像素值的设定范围?

119

如何在像素簇周围创建封闭区域?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文