Density Based Fuzzy Thresholding for Image Segmentation-基于密度的图像二值化

前言

之前处理图像二值化时使用的是经典的Otsu算法,这次要求使用Fuzzy Density Model去做一个图像二值化处理,网上参考文档除了作者的论文,几乎为零,可参考代码都没有。所以读完论文后特地记录一下。
先声明:这篇论文还没有完全理解吸收,记录自己学习过程,如果有误,欢迎交流

论文简介

一般图像二值化的处理是对图像灰度化后,处理其直方图,取其中的一个点作为threshold,以此为界,将图片中灰度小于该点的值、大于该点的值分成两部分。

Fuzzy Set Theory

作者先介绍了一个称作Fuzzy Set的理论。令X={X1,X2....Xn},函数μ,它将X中的每个元素映射到[0,1]区间上,即对于X中元素Xi,有: 0<=μ(Xi)<=1,令A={( Xi , μ(Xi) )},A即为X上的Fuzzy Set。相当于对于X中的每个元素给予了一个0-1的权重。这里的μ特别地被称为membership function。

Fuzzy Set Model

何为图像密度?以下图为例,假设点距离圆心越近,则拥有越高的权重,那么我们可以得出(a)图中点权重之和比上以r为半径的圆面积,大于,(b)图中点权重之后比上以r为半径的圆面积


论文里提到了三个membership function,分别为

  • Zadeh’s S-membership function


  • Gamma membership function


  • Gaussian membership function


这里引入fdm(r,p)函数,用于计算fuzzy density,r为计算的图像区域,p为区域内的点。fdm计算结果越高,则相似度越大。

Threshold Selection Method

对于图像的直方图有明、暗两部分,对于Object(亮部),显然有灰度越小,越暗,权重越低,对于Background则反之,所以如果我们分别选取灰度图中最大、最小作为明暗中心,做出他们的fdm函数,大致如图



交界处即为所需要的threshold。

The Rest

论文剩余部分对左右两个初始区域、以及threshold的适当调整做了更近一步探讨,这里暂时不记录了(主要是没有看大明白。。。),有兴趣读者可以查看作者原论文

实践

Lang:Python
Package:PIL

#  Created by william wei on 17/1/7.
#  Copyright © 2017年. All rights reserved.

import PIL
import math


from PIL import Image

Xmin=0
Xmax=0
hist = []

def membership_function(x):
    b = (Xmin+Xmax)/2
    x = x*1.0
    if x <= Xmin:
        return 0
    if x>Xmin and x<=b:
        return 2*math.pow( (x-Xmin)/(Xmax-Xmin), 2 )
    if x>b and x<Xmax:
        return 1-2*math.pow( (x-Xmax)/(Xmax-Xmin), 2 )
    if x>=Xmax:
        return 1
    return 0

def fdm(x,y,inverse=0):
    global Xmin,Xmax
    result = 0
    num = 0
    for i in xrange(x,y):
        num = num+hist[i]
        if inverse==1:
            result = result+hist[i]*membership_function(Xmax-(i-Xmin))
        else:
            result = result+hist[i]*(membership_function(i))

    return result/num


if __name__ == "__main__":

    im=Image.open('cherry.png')
    im = im.convert('L')
    hist = im.histogram()

    threshold = 0

    for i in xrange(0,256):
        if hist[i] > 0:
            Xmin = i
            break;
        
    for i in xrange(0,256):
        if hist[255-i] > 0:
            Xmax = 255-i
            break;

    for x in xrange(Xmin+1,Xmax):
        left = fdm(Xmin,x,1)
        right = fdm(x,Xmax)

        if left<right and threshold == 0:
            threshold = x
            print threshold


    height,width = im.size
    bkg = im.convert('L')
    obj = im.convert('L')


    for x in xrange(0,height):
        for y in xrange(0,width):
            pixel = im.getpixel((x,y))
            print (threshold)
            if pixel<threshold :
                obj.putpixel((x,y),0)
            else:
                bkg.putpixel((x,y),0)

    bkg.save('bkg.png') 
    obj.save('obj.png')

效果如图:

  • 原图


  • Object


  • Background


再说点

效果说实话,确实不是很好,比Otsu差不少,不过这倒不是作者的问题,应该是把论文剩余部分读完的原因吧,姑且先这样,后面有时间再回来研究一下。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,200评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,526评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,321评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,601评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,446评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,345评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,753评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,405评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,712评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,743评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,529评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,369评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,770评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,026评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,301评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,732评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,927评论 2 336

推荐阅读更多精彩内容

  • 二值化是图像分割的一种方法。在二值化图象的时候把大于某个临界灰度值的像素灰度设为灰度极大值,把小于这个值的像素灰度...
    木夜溯阅读 12,962评论 0 10
  • 本章介绍了基于elastix的基本配准概念。 更高级的配准主题将在第6章中讨论。图像配准是医学影像领域的重要工具。...
    peterpan_hai阅读 9,151评论 1 10
  • 前言: 以斯坦福cs231n课程的python编程任务为主线,展开对该课程主要内容的理解和部分数学推导。该课程的学...
    Deepool阅读 49,120评论 33 88
  • 世上排名第一的杀手之王代号“曼珠沙华”却只有14岁,性格:笑面虎,真名:珊岸华,5岁时开朗,活泼,只有她自己知道那...
    彼岸花之绝望的爱阅读 333评论 0 0
  • 传说中的三叶草也叫苜蓿草 金花菜原名,属豆科植物。见载于陶宏景《名医别录》。嫩茎叶,又名黄花苜蓿,刺苜蓿、草头。茎...
    田田圈Tina阅读 3,181评论 2 5