LOG与DOG的关系

注意:这里只是推出LOG与DOG的关系

1)高斯函数

                            (1)

2)DOG(Difference Of Gaussian)

    DoG算子是LoG算子的近似,做法是求取不同sigma方差下的高斯滤波图像的差,这导致DoG图像有负数产生,因此实际操作时要把原图像素值设为有符号数。对高斯函数即式(1)求σ偏导。

不妨令:

                                        (2)

则由式(2)求σ偏导得:

                                                                                   (3)

在不妨令

                                    (4)

                                             (5)                         
                              

则对公式(4)求σ偏导为:

                                  (6)

 

由(2)(6)可得出高斯函数对σ求偏导,即:
           (7)

3)LOG(Laplacian Of Gaussian)

    LOG算子可以用下式表示:

                                         (8)

    可以看出LOG就是高斯函数的二阶导。具体推导过程如下:

高斯函数可以转化为下式

                                   (9)

不妨令

                                                      (10)

                                                        (11)

由公式(10)求得对x的偏导:
                                                 (12)

再次求导得:

                       (13)

同理可求得公式(10)对y的二次偏导:
                                       (14)

所以公式(8)可表示为:

(15)

4)LOG与DOG的关系

    由式(7)(15)可以看出:

                                                         (16)

   由导数定义得:

                 (17)

    则由(16)(17)得:

                         (18)

   将公式(18)变形得:

                (19)

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
非常抱歉,之前提供的代码有误。下面是修正后的代码: ```python from collections import defaultdict, deque def findLadders(beginWord, endWord, wordList): # 构建单词到ID的映射关系 wordId = defaultdict(int) idWord = [] for word in wordList: if word not in wordId: wordId[word] = len(idWord) idWord.append(word) if endWord not in wordId: return [] # 构建图 graph = defaultdict(list) for word in wordList: for i in range(len(word)): mask = word[:i] + '*' + word[i+1:] graph[word].append(wordId[mask]) graph[wordId[mask]].append(wordId[word]) # 使用BFS找到最短路径 res = [] visited = defaultdict(bool) queue = deque([(wordId[beginWord], [[beginWord]])]) minLevel = float('inf') while queue: curWord, path = queue.popleft() if len(path) > minLevel: break if curWord == wordId[endWord]: res.append(path) minLevel = len(path) for neighbor in graph[curWord]: if not visited[neighbor]: visited[neighbor] = True queue.append((neighbor, path + [idWord[neighbor]])) return res # 测试样例 beginWord = "hit" endWord = "cog" wordList = ["hot", "dot", "dog", "lot", "log", "cog"] result = findLadders(beginWord, endWord, wordList) print(result) ``` 这段代码使用了广度优先搜索(BFS)来寻找最短路径。首先构建单词到ID的映射关系,然后构建图,图中的每个节点是一个单词,如果两个单词只有一个字母不同,则它们之间有一条边。接下来,使用BFS找到最短路径,并将结果存储在变量`res`中。最后,打印结果。 希望能对您有所帮助!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值