基于模块区分度的统计及可视化

114次阅读
没有评论

共计 765 个字符,预计需要花费 2 分钟才能阅读完成。

提醒:本文最后更新于 2024-08-30 16:09,文中所关联的信息可能已发生改变,请知悉!

概述

graph TD
    A(取 2 * 2 像素格为单位)-->B(计算 8 邻域区分度)-->C(统计每单位区分度大于阈值的个数)-->D(将计数为 0 的单位设为 255)

素材

基于模块区分度的统计及可视化

计算区分度

def get_dif(img):
    raw, col = img.shape
    dif = np.zeros((raw - 1, col - 1, 8), dtype=int)

    for i in range(raw - 1):
        for j in range(col - 1):
            for m in range(8):
                d = get_1D_2_2D(m)
                if(i + d[0] >= 0 and i + d[0] + 1 <= raw - 1 and j + d[1] >= 0 and j + d[1] + 1 <= col -1):
                    dif[i][j][m] = abs(int(img[i][j]) - int(img[i + d[0]][j + d[1]])) + \
                                    abs(int(img[i][j + 1]) - int(img[i + d[0]][j + d[1] + 1])) + \
                                    abs(int(img[i + 1][j + 1]) - int(img[i + d[0] + 1][j + d[1] + 1])) + \
                                    abs(int(img[i + 1][j]) - int(img[i + d[0] + 1][j + d[1]]))
    return dif

统计

def get_cmp_e(dif, e):
    row, col, m = dif.shape
    cnt = np.zeros((row, col), dtype=int)

    for i in range(row):
        for j in range(col):
            cnt0 = 0
            for k in range(m):
                if dif[i][j][k] > e:
                    cnt0 += 1
            cnt[i][j] = int(cnt0)
    return cnt

可视化

基于模块区分度的统计及可视化

完整代码及数据

https://gitee.com/icvuln/server_backup_denoise18/tree/master/dif_max

正文完
 0
icvuln
版权声明:本站原创文章,由 icvuln 于2023-03-05发表,共计765字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)