自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阿兵-AI医疗的专栏

从事医疗行业,专注图像处理、图形处理、人工智能; VTK交流:678462859;

  • 博客(296)
  • 资源 (15)
  • 论坛 (1)
  • 收藏
  • 关注

原创 1.1基础之可视化TensorFlow
原力计划

可视化是认知程序的最直观方式。基本概念  TensorBoard是TensorFlow自带的一个强大的可视化工具,也是一个web应用程序套件。TensorBoard目前只支持7种可视化,即SCALARS、 IMAGES、AUDIO、GRAPHS、DISTRIBUTIONS、HISTOGRAMS和EMBEDDINGS。SCALARS:展示训练过程中的准确率、损失值、权重/偏置的变化情况...

2020-03-05 21:54:20 1587 3

原创 4.2图像分割之区域分裂与合并

区域分裂与合并  区域生长是从一组生长点开始的,另一种方法是在开始时将图像分割成一系列任意不相关的区域,然后将它们合并或者拆分以满足限制条件,这就是区域分裂与合并。通过分裂,可以将不同特征的区域分离开,而通过合并,可以将相同特征的区域合并起来。(1) 分裂  令R表示整个图像,P代表某种相似性准则。一种区域分裂方法是首先将图像等分为4个区域,然后反复将分割得到的子图像再次分为4个区...

2018-08-05 15:20:34 12973 4

原创 OpenGL学习系列导航

简介  OpenGL学习系列是《计算机图形学(第四版)》、《OpenGL编程指南(原书第8版)》、《C++ GUI Qt4编程(第二版)》以及网络资源的学习笔记。主要内容是在Qt5.6.x上学习OpenGL,不仅编程示例,同时学习理论知识。为了避免Visual Studio有点麻烦的环境配置,使用qmake创建项目文件,只需下载源代码就能跨平台运行。 代码下载地址:https://githu...

2017-12-17 11:42:00 953

原创 3.2.1 体渲染之Ray Casting

基本概念光线投射方法是基于图像序列的直接体绘制算法。从图像的每一个像素,沿固定方向(通常是视线方向)发射一条光线,光线穿越整个图像序列,并在这个过程中,对图像序列进行采样获取颜色信息,同时依据光线吸收模型将颜色值进行累加,直至光线穿越整个图像序列,最后得到的颜色值就是渲染图像的颜色。为什么在上面的定义是穿越 “ 图像序列 ” ,而不是直接使用 “ 体纹理 ” ?原因在于,体数据有多种组织形式,在基于 CPU 的高级语言编程中,有时并不使用体纹理,而是使用图像序列。在基于 GPU 的着色程序中,则必须使用

2021-05-23 10:05:40 33

原创 模糊连接度分割

相对模糊连接度迭代模糊连接度基于尺度的亲和度基于向量场的亲和度参考资料https://github.com/joakimlindblad/FuzzConn

2021-04-07 22:00:02 74

原创 模糊连接度

概述随机性和模糊性是两种不同的不确定性,概率论用于前者,而模糊集合则用于出来后者。由于模糊集合理论能够很好地表述和处理不确定性问题,所以模糊集合理论在图像分割领域获得广泛应用。由于在模糊集合中,图像地一个像素属于一个边界点或某个区域是用一个隶属度表示的,因此这样就可以避免过早地做出明确判断,已便为更高级地处理保留尽可能多的信息。在传统集合理论中,一个元素或者属于一个集合,或者不属于一个集合。但在实际问题中,往往需要表示元素对集合从属关系的不确定性。1965年,Zadeh提出模糊数学的概念,用来描述这种带

2021-04-07 21:56:14 123 13

原创 目标跟踪之Camshift

基本概念camshift("continuously adaptive mean-shift"的缩写),即连续自适应的 算法。其基本思想是对视频序列的所有图像帧都作MeanShift运算,并将上一帧的结果(即搜索窗口的中心位置和窗口大小)作为下一帧MeanShift算法的搜索窗口的初始值,如此迭代下去。简单点说,meanShift是针对单张图片寻找最优迭代结果,而camShift则是针对视频序列来处理,并对该序列中的每一帧图片都调用meanShift来寻找最优迭代结果。正是由于camShift针对一个视频

2021-04-05 19:58:26 57

原创 图像分割之分水岭分割算法

基本思想分水岭(watershed)是地形学中的一个经典概念,例如美国落基山脉分水岭,将美国分为两个区域,落在这个分水岭一边的雨滴,最终会到达大西洋,但是落在另一边的雨滴,最终回流到太平洋。为了提取分水岭,人们提出了各种各样的算法,在这些算法中,Vincent和Soille提出了一种基于模拟沉浸的实现方法。在图像处理领域,灰度图像可以被视为地形表面,图像中每个像素的灰度代表这点的高度,其每一个局部极小值(local minima)及其影响区域成为集水盆地(catchments basin)。这样分水岭便被

2021-04-05 16:51:44 123 2

原创 图像分割之最大熵阈值分割

最大熵阈值分割法和OTSU算法类似,假设将图像分为背景和前景两个部分。熵代表信息量,图像信息量越大,熵就越大,最大熵算法就是找出一个最佳阈值使得背景与前景两个部分熵之和最大。基本原理频率和概率直方图每个矩形框的数值描述的是图像中相应灰度值的频率。因此,可以说直方图是一种离散的频率分布。给定一个大小为M*N的图像I,直方图中所有矩形框所代表的数值之和,即为图像中的像素数量,即:相对应的归一化直方图表示为:0<=i<K 通常被解释为一个随机过程的概率分布或概率密度函数,表示的是图像中.

2021-04-03 11:11:36 230

原创 CMake之建立多模块工程

在Windows下, 用CMake和Visual Studio建立一个包含多个模块的工程,其中有静态库和动态库。多工程本方案由一个可执行文件和一个静态库和一个动态库构成,可执行文件调用了这两个库文件,可执行文件和动态库最后生成在bin目录下,静态库生成在libs目录。目录结构├── bin├── build├── CMakeLists.txt├── libs└── src ├── CMakeLists.txt ├── libdynamic │ ├── CMak.

2021-04-03 10:32:55 168

原创 CMake之建立简单工程

最简单的例子目录结构.├── CMakeLists.txt└── main.cppmain.cpp#include <iostream>int main(){ std::cout <<"Hello World" << std::endl; return 0;}CMakeLists.txtPROJECT (SimpleExample)SET(SRC_LIST main.cpp)MESSAGE(STATUS "This is BI

2021-04-03 09:50:19 22

原创 图像锐化算法sharpen

基本概念图像锐化是使图像边缘更加清晰的一种图像处理方法。常用的做法是提取图像的高频分量,将其叠加到原图上。图像高频分量的提取有两种做法:一种是用高通滤波器得到高频分量;另一种是用低通滤波器得到低频,然后用原图减去低频得到高频。直接提取高频的方法有sobel算法、laplcian算子,sobel算子是图像的一阶导数,提取的是梯度信息,分水平和垂直两种,常常用来做边缘检测、方向判别,sobel算子在斜坡处不为0,因此会产生较粗的边缘。laplcian算子是图像的二阶导,在图像开始变化和结束变化的地方值不为

2021-03-28 15:32:01 90

原创 均值漂移滤波

基本原理前面我们学习了均值漂移算法。这里介绍下均值漂移不连续性保持滤波。设xi是d维原始图像中的点1、对于每个图像像素xi,初始化步数j=1,yi,1=xi。2、计算yi,j+1,直到收敛于yi,con。3、在xi处滤波后的像素值被赋值为收敛点 yi,con的像素值示例演示OpenCV提供了pyrMeanShiftFiltering。void pyrMeanShiftFiltering(InputArray src, OutputArray dst, double sp,

2021-03-28 15:27:33 110

原创 导向滤波

基本原理导向滤波(Guided Fliter)显式地利用 guidance image 计算输出图像,其中 guidance image 可以是输入图像本身或者其他图像。导向滤波比起双边滤波来说在边界附近效果较好;另外,它还具有 O(N) 的线性时间的速度优势。细节请查阅论文《Guided Image Filtering》除了速度优势以外,导向滤波的一个很好的性能就是可以保持梯度,这是bilateral做不到的,因为会有梯度翻转现象。(Preserves edges, but not gradient

2021-03-28 13:22:21 52

原创 非局部均值去噪

基本原理该算法来自论文《A non-local algorithm for image denoising》去噪属于图像复原的范畴,通常使用滤波来实现,并且往往是低通(平滑噪声)滤波器。对于单帧图像去噪,使用空间邻域像素来处理,对于多帧图像去噪,则可以考虑时空域相结合的方法,即时间+空间的3DNR方法。简单的平滑滤波器有均值滤波器、高斯滤波器,算法复杂度低,但会导致图像模糊,双边滤波器是性能较好的非线性滤波器,在去噪的同时,保留了较强的纹理细节,缺点是弱的纹理被滤掉了。非局部均值(Non Local M

2021-03-28 13:10:10 46

原创 图像复原之维纳滤波

基本原理图像复原是图像处理的重要组成部分,由于图像在获取和传输过程中通常不可避免的要受到一些噪声的干扰,因此在进行其他图像处理以及图像分析之前,应该尽量将图像复原到其原始真实状态。图像复原的关键问题是在于建立退化模型。图像退化模型如下:维纳滤波器是一种自适应最小均方误差滤波器,它最终的目的是使得复原图像和原始图像的均方误差最小。省去推导过程,给出频率的维纳滤波公式示例演示在下面例子中,我们对退化函数进行了简化,将退化函数置为1,因此维纳滤波公式简化为:#include <opencv2

2021-03-28 12:59:43 537 1

原创 图像配准之相位配准

基本原理图像配准是图像处理的基本任务之一,用于将不同时间、不同传感器、不同视角及不同拍摄条件下获取的关于同一目标或场景的两幅或多幅图像进行主要是几何意义上的匹配套和的过程。图像配准的基本问题是找出一种图像转换方法,用以纠正图像的形变。造成图像形变的原因多种多样,例如对于遥感图像而言,传感器噪声、由传感器视点变化或平台不稳定造成的透视变化、被拍摄物体的移动、变形或生长等变化、闪电和大气变化,以及阴影和云层遮盖都使图像产生不同形式的形变。正是图像形变原因和形式的不同决定了多种多样的图像配准技术。图像配准方法

2021-03-28 10:30:26 129

原创 形态学之灰度形态学

与二值形态学相对应另一种形态学运算是灰度形态学。灰度形态学与二值形态学相比,不仅在图像本身的空间尺寸上有一个变化,而且图像本身的灰度值也会发上变化。灰度膨胀(Grayscale Dilation)运算灰度形态学膨胀,在数学上的定义,可以用如下公式表示:根据公式,对灰度形态学可以简单理解为,对于原始图像F中(m, n)坐标的灰度值,分别向右移动(a, b)个单位,再加结构化元素K(a, b)的值,再取其求得的最大值。为了更加直观地了解灰度膨胀的运算过程,假设有一个一维的灰度分布列表和一个一维的结.

2021-03-28 10:25:51 169

原创 各向异性滤波

基本原理各向异性扩散滤波主要是用来平滑图像的,克服了高斯模糊的缺陷,各向异性扩散在平滑图像时是保留图像边缘的,和双边滤波很像。各向异性扩散也叫P-M扩散,各向异性扩散(Anisotropic diffusion)的算法可以详见论文:《Scale-space and edge detection using anisotropic diffusion》通常我们有将图像看作矩阵的,看作图的,看作随机过程的。各向异性扩散滤波将图像看作热量场了。每个像素看作热流,根据当前像素和周围像素的关系,来确定是否要向周围

2021-03-14 20:26:03 39

原创 双边滤波

基本原理双边滤波是《Bilateral Filtering for Gray and Color Images》论文提出的一种非线性滤波。它是一种结合图像的空间邻近度和像素相似度的折中处理,同时考虑空域信息和像素值相似性,从而达到去噪的同时保留边缘。原理是其滤波器的核由一个与空间距离相关的高斯函数与另一个与像素值距离相关的高斯函数相乘生成。所以对于高斯滤波,仅仅用到空间距离的权重系数核与图像卷积确定中心点的像素。即离中心点越近的点,其权重系数越大。双边滤波加入像素值信息的权重,即在邻域内像数值越接近中

2021-03-14 17:22:22 23

原创 每个程序员都要向特朗普学习

要想搞好一个好的生意或者项目或者计划,就要对身边的人各种忽悠,并且一定要“趁人之危”。投最少的钱,不要冒风险。(当然忽悠和“趁人之危”,在特朗普看来是生存法则,不是坏事。)这几天,美国大选很热闹。很多人都在看特朗普的笑话。不过,我们除了吃瓜,还要学习别人的优点。特朗普常常为了搞成一个好的生意,对身边的人各种忽悠。这里讲个他的故事,看看他怎么用最低风险获得最大的收益。70年代末,特朗普在纽约发现一经营不善又位置极好的酒店commondore.。当时经济形势很差,酒店老亏损。特朗普想,经济差亏损,真是我.

2020-11-15 20:40:24 100

原创 4.集成学习之3.Stacking

分层模型集成框架stacking(叠加算法)Stacking集成算法可以理解为一个两层的集成,第一层含有一个分类器,把预测的结果(元特征)提供给第二层, 而第二层的分类器通常是逻辑回归,他把一层分类器的结果当做特征做拟合输出预测结果。过程如下图:标准的Stacking,也叫Blending如下图:但是,标准的Stacking会导致信息泄露,所以推荐以下Satcking算法:1. 简单堆叠3折CV分类:## 1. 简单堆叠3折CV分类from sklearn import datasets

2020-09-19 17:24:39 252

原创 4.集成学习之2.Boosting

基于boosting思想的自适应增强方法Adaboost最初的想法是由Robert E. Schapire在1990年提出的,这个想法叫做自适应增强方法。与Bagging相比,Boosting思想可以降低偏差。如更新权重如下图:我们用单一决策树建模:## 我们用单一决策树建模:from sklearn.ensemble import AdaBoostClassifiertree = DecisionTreeClassifier(criterion='entropy',random_state

2020-09-19 17:17:30 68

原创 4.集成学习之1.Bagging

基于bagging思想的套袋集成技术套袋方法是由柳.布莱曼在1994年的技术报告中首先提出并证明了套袋方法可以提高不稳定模型的准确度的同时降低过拟合的程度(可降低方差)。套袋方法的流程如下:注意:套袋方法与投票方法的不同:投票机制在训练每个分类器的时候都是用相同的全部样本,而Bagging方法则是使用全部样本的一个随机抽样,每个分类器都是使用不同的样本进行训练。其他都是跟投票方法一模一样!对训练集随机采样分别基于不同的样本集合训练n个弱分类器。对每个弱分类器输出预测结果,并投票(如下图)

2020-09-06 10:08:26 98

原创 4.集成学习之0.Voting

对比过kaggle比赛上面的top10的模型,除了深度学习以外的模型基本上都是集成学习的产物。集成学习可谓是上分大杀器,今天就跟大家分享在Kaggle或者阿里天池上面大杀四方的数据科学比赛利器—集成学习。什么是集成学习  正所谓“三个臭皮匠赛过诸葛亮”的道理,在机器学习数据挖掘的工程项目中,使用单一决策的弱分类器显然不是一个明智的选择,因为各种分类器在设计的时候都有自己的优势和缺点,也就是说每个分类器都有自己工作偏向,那集成学习就是平衡各个分类器的优缺点,使得我们的分类任务完成的更加优秀。   在.

2020-09-06 10:04:15 183

原创 应用篇之线程基础
原力计划

基本概念  理解线程是至关重要的,因为每个进程至少都有一个线程。我们在讨论了进程实际上有两个组成部分:一个进程内核对象和一个地址空间。类似地,线程也有两个组成部分:一个是线程的内核对象,操作系统用它管理线程。系统还用内核对象来存放线程统计信息的地方。一个线程栈,用于维护线程执行时所需的所有函数参数和局部变量。进程是惰性。进程从来不执行任何东西,它只是一个线程的容器。线程必然是在某个进程的...

2020-04-30 22:52:00 120

原创 DLL系列5.延迟载入DLL

基本概念  为了让DLL更易于使用, Microsoft Visual C++提供了一个很棒的特性,即延迟载入DLL。一个延迟载入的DLL是隐式链接的,系统一开始不会将该DLL载入,只有当我们的代码试图去引用DLL中包含的一个符号时,系统才会实际载入该DLL。延迟载入DLL在下列情况下非常有用。如果应用程序使用了多个DLL,那么它的初始化可能会比较慢,因为加载程序要将所有必需的DLL映射到进...

2020-04-30 22:40:17 208

原创 DLL系列6.函数转发器

基本概念  函数转发器(function forwarder)是DLL输出段中的一个条目,用来将一个函数调用转发到另一个DLL中的另一个函数。例如,如果用Visual C++的DumpBin工具来查看Windows的Kernel32.dll,那么我们会看到类似下面的输出:C:\Windows\System32>DumpBin -Exports Kernel32.dll (some out...

2020-04-30 22:33:50 391 1

原创 应用篇之extern“C”
原力计划

基本概念  C++的项目源码中,经常会看到下面的代码:#ifdef __cplusplusextern "C" {#endif /*...*/ #ifdef __cplusplus}#endif  这里重点介绍extern “C”。在介绍extern "C"之前,简单说下在这里为什么需要#ifdef _cplusplus/#endif _cplusplus。因为C语言中不支...

2020-03-05 20:43:43 145

原创 应用篇之dll lib pdb和头文件

建立一个真正的工程时,一般我们都会用到第三库或者自己建的库。这时候我们需要配置用到的头文件、lib以及dll。另外我们建立自己的静态库或者动态库时,会生成lib甚至dll。它们是什么,有什么作用,基本概念  h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。h头文件  文件内容一般是声明,预编译时在包含该头文件的文件里展开(即全部复制过去)。如果没有库的头文件里的声明...

2020-03-05 20:37:46 887

原创 Phong光照模型

基本概念  什么是光照模型?根据光学物理中的有关规律,计算出物体表面上任何一点投向观察者眼中的光的亮度大小和色彩组成的公式,从而在显示器上生成所显示的真实感图形。简单光照模型假设物体不透明,那么物体表面呈现的颜色仅由其反射光决定。反射光由环境反射、漫反射和镜面反射。所以Phong光照模型的计算公式如下:给出一张效果图,Phong使得二维图片有了立体感和真实感。Phong光照模型存在...

2020-03-05 20:33:45 911 1

原创 2.6CNN实战之人脸关键点识别

之前做一个医学图像特征点标注的项目,就是先从人脸关键点识别开始入门。基本概念  这是Kagge上一个比赛:Facial Keypoints Detection,我们这里使用CNN。大体内容如下图,识别人脸的15个关键点,每个关键点用x和y表示,所以神经网络的输出个数是30。'left_eye_center_x', 'left_eye_center_y','right_eye_cente...

2020-02-23 20:10:48 331

原创 4.模型评估之ROC和AUC

基本概念        ROC全称是“受试者工作特征”(Receiver Operating Characteristic)曲线。ROC曲线的纵轴是“真正率”(True Positive Rate, TPR),横轴是“假正例率”(False Positive Rate, FPR)。TPR=TP/(TP+FN)FP...

2020-02-08 11:39:40 399

原创 4.特征选择

基本概念        对当前学习任务有用的特征称为“相关特征”(relevant feature);没有用的特征称为“无关特征”(irrelevant feature)。从给定的特征集合中选择出相关特征子集的过程,称为“特征选择”(feature selection)…常用的特征选择方法大致可以分为:过滤式(fil...

2020-02-07 10:39:47 185

原创 1.决策树

基本概念        决策树(Decision Tree)是一种用来分类和回归的无参监督学习方法。其目的是创建一种模型从数据特征中学习简单的决策规则来预测一个目标变量的值。顾名思义,决策树是基于树结构进行决策的。决策过程中提出的每个判定问题都是对某个属性的“测试”。如下图所示。其基本流程遵循简单而直观的“分而治...

2020-02-06 14:17:43 318 1

原创 5.实战之参数调优

基本概念        在构建模型时,调参(超参数)是极为重要的一个步骤,因为只有选择最佳的参数才能构建一个最优的模型。但是应该如何确定参数的值呢?一般可以通过交叉验证的方法。什么是交叉验证?我K-折交叉验证为例。当K=2时,就是我们说的2-折交叉验证;当K=5时,就是5折-交叉验证。5-折交叉验证的原理,如下图所示...

2020-02-05 14:06:52 124

原创 图像分割之大津法Otsu

基本概念        大津法(简称Otsu)由1979年由日本学者大津提出的,是一种自适应阈值确定的方法,相关文献链接。它是根据图像的灰度特性, 将图像分为前景和背景两个部分,当取最佳阈值时,二者之间的方差应该是最大的。论文精华如下。      &nb...

2020-02-04 13:15:40 1705

原创 3.样条曲线之NURBS

基本概念        有理函数是两个多项式之比。因此,有理样条(rational spline)是两个样条函数之比。例如,有理B样条曲线可以使用向量描述为:        通常,图像设计软件包使用非均匀节点向量表达式来构造有理B样条...

2020-02-04 13:07:45 741

原创 3.样条曲线之B样条曲线

B样条曲线        B样条是使用更广泛的逼近样条类。B样条有两个贝塞尔样条所不具备的优点:1、B样条多项式次数可独立于控制点数目(有一定限制);2、B样条允许局部控制曲线或曲面。缺点是B样条比贝塞尔样条更复杂。我们可以把沿B样条曲线的坐标位置的计算表示写成混合函数公式的表达式:  &nb...

2020-02-04 12:23:47 1033

原创 3.多边形曲线简化之Douglas-Peucker算法

Douglas-Peucker算法        根据具体情况,减少表示多边形曲线的点,可以减少内存,同时对曲线进行操作的时间。这里介绍经典的Douglas–Peucker算法,相关文献:Algorithms for the reduction of the number of pointsrequired to ...

2020-02-03 14:38:14 1441

64位Python2.7的PIL安装包

Python开发用的是64位,但官网上没有64位的PIL安装。后来找到个安装包,完全可用,已测试。感谢开发者,先分享给大家

2016-09-13

基于Qt的VTK应用程序代码

基于Qt的VTK应用程序(http://blog.csdn.net/webzhuce/article/details/75208738)示例代码

2017-07-16

glMatrix-0.9.5

glMatrix-0.9.5.js文件

2017-01-18

TriangleCircumcircle.zip

计算几何之计算三角形的外接圆(三维)

2021-06-04

mummy.128.vtk

头颅数据 mummy.128.vtk

2019-11-14

MultiExample.zip

用CMake建一个复杂的工程,包括静态库、动态库

2021-04-03

贝塞样条曲线 VTK实现

贝塞样条曲线 VTK实现

2020-12-21

SimpleExample.zip

用CMake建立简单的工程

2021-04-03

基于活动轮廓模型的图像分割算法研究.pdf

基于活动轮廓模型的图像分割算法研究 基于活动轮廓模型的图像分割算法研究

2019-09-14

freeglut-3.0.0

Windows系统下,配置OpenGL4.3及以上需要的工具包

2017-02-05

Debugging Tools for Windows

解决Qt Creator 无法调试问题:Qt Creator: Unknown debugger type “No engine”。You need to set up the debugger only if the automatic setup fails, because the native debugger is missing (as is usually the case for the CDB debugger on Windows, which you always must install yourself) or because the installed version is not supported (for example, when your system contains no, or an outdated version of GDB and you want to use a locally installed replacement instead).

2017-09-03

glew-2.0.0

Windows系统下,配置OpenGL4.3及以上需要的工具包

2017-02-05

glew-2.0.0-win32

Windows系统下,配置OpenGL4.3及以上需要的工具包

2017-02-05

Microsoft Visual C++ 2010 Redistributeble

开发的软件或者使用的软件,如果使用到dll,需要系统安装了Microsoft Visiual C++ Redistributeble,否则软件无法使用。

2016-06-22

VS2010MEXSupport

VS2010MEXSupport,目前业界认为是性能最好的仿射不变区域,MSER是当使用不同的灰度阈值对图像进行二值化时得到的最稳定的区域

2015-03-17

阿兵-AI医疗的留言板

发表于 2020-01-02 最后回复 2020-03-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除