Kai Ding

23 papers B 1Misc 1Journal 14Unranked 7
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Yi Luo, Hamed Hooshangnejad, Xue Feng, Gaofeng Huang, Xiaojian Chen, Rui Zhang, Quan Chen, Wil Ngwa, Kai Ding
2025 J jnl
Medical Image Anal.
Debarghya China, Luke J. MacLean, Jinchi Wei, Nicholas Theodore, Norbert Johnson, Neil R. Crawford, Kai Ding, Ali Uneri
2025 J jnl
CoRR
Yi Luo, Yike Guo, Hamed Hooshangnejad, Rui Zhang, Xue Feng, Quan Chen, Wil Ngwa, Kai Ding
2025 J jnl
CoRR
Yi Luo, Yike Guo, Hamed Hooshangnejad, Kai Ding
2024 J jnl
CoRR
Hamed Hooshangnejad, Xue Feng, Gaofeng Huang, Rui Zhang, Quan Chen, Kai Ding
2024 J jnl
IEEE Trans. Biomed. Eng.
Debarghya China, Ziwei Feng, Hamed Hooshangnejad, Daniel Sforza, Prasad Vagdargi, Muyinatu A. Lediju Bell, Ali Uneri, Alejandro Sisniega, Kai Ding
2024 J jnl
IEEE Trans. Medical Imaging
Hamed Hooshangnejad, Debarghya China, Yixuan Huang, Wojciech Zbijewski, Ali Uneri, Todd McNutt, Junghoon Lee, Kai Ding
2022 conf
Image-Guided Procedures
Hamed Hooshangnejad, Kai Ding
2021 J jnl
IEEE Trans. Medical Imaging
Xinyue Huang, Muyinatu A. Lediju Bell, Kai Ding
2017 J jnl
IEEE Trans. Biomed. Eng.
Hasan Tutkun Sen, Muyinatu A. Lediju Bell, Yin Zhang, Kai Ding, Emad Boctor, John Wong, Iulian Iordachita, Peter Kazanzides
2016 J jnl
Frontiers Robotics AI
H. Tutkun Sen, Alexis Cheng, Kai Ding, Emad Boctor, John Wong, Iulian Iordachita, Peter Kazanzides
2015 conf
ICAR
H. Tutkun Sen, Muyinatu A. Lediju Bell, Yin Zhang, Kai Ding, John Wong, Iulian Iordachita, Peter Kazanzides
2012 J jnl
Int. J. Biomed. Imaging
Kunlin Cao, Kai Ding, Joseph M. Reinhardt, Gary E. Christensen
2012 J jnl
Int. J. Biomed. Imaging
Kunlin Cao, Gary E. Christensen, Kai Ding, Kaifang Du, Madhavan L. Raghavan, Ryan E. Amelon, Kimberly M. Baker, Eric A. Hoffman, Joseph M. Reinhardt
2011 J jnl
IEEE Trans. Medical Imaging
Keelin Murphy, Bram van Ginneken, Joseph M. Reinhardt, Sven Kabus, Kai Ding, Xiang Deng, Kunlin Cao, Kaifang Du, Gary E. Christensen, Vincent Garcia, Tom Vercauteren, Nicholas Ayache, Olivier Commowick, Grégoire Malandain, Ben Glocker, Nikos Paragios, Nassir Navab, Vladlena Gorbunova, Jon Sporring, Marleen de Bruijne, Xiao Han, Mattias P. Heinrich, Julia A. Schnabel, Mark Jenkinson, Cristian Lorenz, Marc Modat, Jamie McClelland, Sébastien Ourselin, Sascha E. A. Muenzing, Max A. Viergever, Dante De Nigris, D. Louis Collins, Tal Arbel, Marta Peroni, Rui Li, Gregory C. Sharp, Alexander Schmidt-Richberg, Jan Ehrhardt, René Werner, Dirk Smeets, Dirk Loeckx, Gang Song, Nicholas J. Tustison, Brian B. Avants, James C. Gee, Marius Staring, Stefan Klein, Berend C. Stoel, Martin Urschler, Manuel Werlberger, Jef Vandemeulebroucke, Simon Rit, David Sarrut, Josien P. W. Pluim
2011 conf
ISBI
Kai Ding, Wilson Miller, Kunlin Cao, Gary E. Christensen, Joseph M. Reinhardt, Stanley Benedict, Bruce Libby, Ke Sheng
2011 conf
ISBI
Kaifang Du, Kai Ding, Kunlin Cao, John E. Bayouth, Gary E. Christensen, Joseph M. Reinhardt
2011 Misc conf
ICASSP
Kai Ding, Kaifang Du, Kunlin Cao, Gary E. Christensen, Joseph M. Reinhardt
2010 B conf
Image Processing
Kunlin Cao, Kai Ding, Gary E. Christensen, Joseph M. Reinhardt
2010 conf
WBIR
Kunlin Cao, Kai Ding, Gary E. Christensen, Madhavan L. Raghavan, Ryan E. Amelon, Joseph M. Reinhardt
2009 conf
MICCAI (1)
Kai Ding, Youbing Yin, Kunlin Cao, Gary E. Christensen, Ching-Long Lin, Eric A. Hoffman, Joseph M. Reinhardt
2008 J jnl
Medical Image Anal.
Joseph M. Reinhardt, Kai Ding, Kunlin Cao, Gary E. Christensen, Eric A. Hoffman, Shalmali V. Bodas
2007 conf
IPMI
Joseph M. Reinhardt, Gary E. Christensen, Eric A. Hoffman, Kai Ding, Kunlin Cao
redb/extractors/decompiler/bninja/similarity/minhashcustom.py
← Index redb/extractors/decompiler/bninja/similarity/minhashcustom.py python
import numpy as np
import mmh3

class MinHashCustom:
    """
    DTO for an actual MinHash
    <minhash>: a binary sequence of packed int8/32 values
    <minhash_int>: the equivalent representation of <minhash> but as list of int8/32
    """

    _HASH_MAX = 0xFFFFFFFF
    _MINHASH_BITS = 32

    def getSignatureEntrySize(self):
        return 1 if self.MINHASH_BITS <= 8 else 4

    def __init__(self, function_addr=None, minhash_bytes=None, minhash_signature=None, minhash_bits=32):
        self.minhash = b""
        self.minhash_int = []
        if minhash_bits:
            self._MINHASH_BITS = minhash_bits
        if minhash_bytes and minhash_signature:
            raise ValueError("Can use only one keyword argument")
        if minhash_bytes:
            if self._MINHASH_BITS <= 8:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint8)
            else:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint32)
            self.setMinHash(minhash_signature)
        elif minhash_signature:
            self.setMinHash(minhash_signature)

        self.shingler_composition = {}
        self.function_addr = function_addr

    def hasMinHash(self):
        return len(self.minhash) > 0

    def getMinHash(self):
        return self.minhash

    def getMinHashInt(self):
        return self.minhash_int

    def setMinHash(self, minhash_signature):
        self.minhash_int = [i % 2 ** self._MINHASH_BITS for i in minhash_signature]
        if self._MINHASH_BITS <= 8:
            self.minhash = np.array(self.minhash_int, dtype=np.uint8).tobytes()
        else:
            self.minhash = np.array(self.minhash_int, dtype=np.uint32).tobytes()

    def getComposition(self):
        return self.shingler_composition

    def scoreAgainst(self, other):
        return self.calculateMinHashScore(self.minhash, other.minhash, minhash_bits=self._MINHASH_BITS)

    @staticmethod
    def getHashMax():
        return MinHashCustom._HASH_MAX

    @staticmethod
    def hashData(data, seed) -> int:
        if isinstance(data, (str, bytes, bytearray)):
            return mmh3.hash(data, seed) & MinHashCustom._HASH_MAX
        elif isinstance(data, (list, tuple)):
            to_hash = "|".join(str(elem) for elem in data)
            return mmh3.hash(to_hash, seed) & MinHashCustom._HASH_MAX
        else:
            raise NotImplementedError(
                f"Type not supported for hashData: {type(data).__name__}"
            )

    @staticmethod
    def calculateMinHashScore(first, second, minhash_bits=32):
        if minhash_bits <= 8:
            first_np = np.frombuffer(first, dtype=np.uint8)
            second_np = np.frombuffer(second, dtype=np.uint8)
        else:
            first_np = np.frombuffer(first, dtype=np.uint32)
            second_np = np.frombuffer(second, dtype=np.uint32)
        return 100.0 * sum(first_np == second_np) / len(first_np)

    @staticmethod
    def calculateMinHashIntScore(first, second):
        score = 0
        num_hashes = len(first)
        if num_hashes:
            for index, part in enumerate(first):
                score += 1 if part == second[index] else 0
            return 100.0 * score / num_hashes
        return 0.0

    @property
    def MINHASH_BITS(self):
        return self._MINHASH_BITS