我正在尝试使用 GLCM 算法对卫星图像进行纹理分析。scikit-image 文档对此非常有帮助,但对于 GLCM 计算,我们需要在图像上循环的窗口大小。这在 Python 中太慢了。我在 stackoverflow 上找到了很多关于滑动窗口的帖子,但计算需要永远进行。我有一个如下所示的示例,它有效但需要很长时间。我想这一定是一种天真的做法
image = np.pad(image, int(win/2), mode='reflect')
row, cols = image.shape
feature_map = np.zeros((M, N))
for m in xrange(0, row):
for n in xrange(0, cols):
window = image[m:m+win, n:n+win]
glcm = greycomatrix(window, d, theta, levels)
contrast = greycoprops(glcm, 'contrast')
feature_map[m,n] = contrast
Run Code Online (Sandbox Code Playgroud)
我遇到了skimage.util.view_as_windows一种方法,这对我来说可能是一个很好的解决方案。我的问题是,当我尝试计算 GLCM 时,出现错误:
ValueError:参数
image必须是二维数组
这是因为 GLCM 图像的结果具有 4d 维度,而 scikit-imageview_as_windows方法仅接受 2d 数组。这是我的尝试
win_w=40
win_h=40
features = np.zeros(image.shape, dtype='uint8')
target = features[win_h//2:-win_h//2+1, win_w//2:-win_w//2+1]
windowed = …Run Code Online (Sandbox Code Playgroud) 我正在使用scikit-learn库在卫星图像上执行监督分类(支持向量机分类器).我的主要问题是如何训练我的SVM分类器.我在youtube上观看了很多视频,并阅读了一些关于如何训练SVM模型的教程scikit-learn.我看过的所有教程都使用了着名的Iris数据集.为了执行有监督的SVM分类,scikit-learn我们需要有标签.对于Iris数据集,我们有Iris.target我们试图预测的标签('setosa','versicolor','virginica').通过阅读scikit-learn文档,培训过程非常简单.
在我的情况下,我必须训练在城市区域捕获的SAR卫星图像,我需要对城市区域,道路,河流和植被进行分类(4级).这个图像有两个波段但我没有我想要预测的每个类的标签数据,例如Iris数据.
所以,我的问题是,我是否必须手动创建矢量数据(对于4个类)才能训练SVM模型?训练模型比手动创建矢量数据有更简单的方法吗?在这种情况下我们该怎么做?
说实话,我有点困惑.我将不胜感激任何帮助