Python中如何按像素强度值对灰度图像对应的矩阵进行排序
你直接使用numpy.sort()得不到预期结果,是因为该方法默认沿矩阵的最后一个轴排序,对二维灰度矩阵来说就是对每一行单独做排序,而非全局所有像素统一排序。
解决方案
替换代码中im_b = ???的部分为以下代码即可:
# 先将二维矩阵展平为一维数组,全局排序后再恢复为原矩阵尺寸 im_b = np.sort(im.flatten()).reshape(im.shape)
如果需要得到强度从高到低的倒序排序结果,可使用以下代码:
im_b = np.sort(im.flatten())[::-1].reshape(im.shape)
实现原理
im.flatten():将形状为(s, s)的二维灰度矩阵展平为长度为s*s的一维数组,包含裁剪区域所有像素的强度值np.sort():对一维数组做全局排序,默认按强度从小到大升序排列reshape(im.shape):将排序完成的一维数组重新转换为和裁剪区域相同尺寸的二维矩阵,排序后的像素会按行优先的顺序填充到新矩阵中
内容的提问来源于stack exchange,提问作者Kar
相关产品推荐
相关产品推荐

