Xiao-Ping Zhang

302 papers A* 18A 9B 15C 5Misc 17Journal 200Unranked 38
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Mob. Comput.
Ziyuan Wang, Xiao-Ping Zhang, Wenbo Ding, Yuhan Dong, Xinlei Chen
2026 J jnl
IEEE Trans. Mob. Comput.
Haoyang Wang, Jingao Xu, Chenyu Zhao, Yuhan Cheng, Xuecheng Chen, Chaopeng Hong, Xiao-Ping Zhang, Yunhao Liu, Xinlei Chen
2026 J jnl
IEEE Signal Process. Lett.
Lang He, Xinchun Yu, Xiao-Ping Zhang, Konstantinos N. Plataniotis
2026 J jnl
IEEE Trans. Wirel. Commun.
Kun Wu, Yuhan Dong, Xinchun Yu, Yongkang Ding, Jian Song, Xiao-Ping Zhang
2026 J jnl
IEEE Internet Things J.
Lang He, Xiao-Ping Zhang, Konstantinos N. Plataniotis
2026 A* conf
WWW
Junwei Xu, Zhibo Xiao, ChuXin Chen, Chengyu Lai, Qijie Shen, Jiuning Lin, Dimin Wang, Jialin Zhu, Xiao-Ping Zhang
2026 J jnl
IEEE Internet Things J.
Nan Zhou, Zuxin Li, Fanhang Man, Xuecheng Chen, Susu Xu, Fan Dang, Chaopeng Hong, Yunhao Liu, Xiao-Ping Zhang, Xinlei Chen
2026 J jnl
IEEE Trans. Multim.
Yongzhen Wang, Jie Sun, Heng Liu, Xiao-Ping Zhang, Mingqiang Wei
2026 J jnl
IEEE Robotics Autom. Lett.
Kai Li, Shengtao Zheng, Lingkun Xiu, Yuze Sheng, Xiao-Ping Zhang, Dongyue Huang, Xinlei Chen
2026 J jnl
ACM Trans. Sens. Networks
Yuhan Cheng, Xuecheng Chen, Yixuan Yang, Haoyang Wang, Jingao Xu, Chaopeng Hong, Susu Xu, Xiao-Ping Zhang, Yunhao Liu, Xinlei Chen
2026 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Jie Sun, Heng Liu, Yongzhen Wang, Xiao-Ping Zhang, Mingqiang Wei
2025 J jnl
IEEE Trans. Geosci. Remote. Sens.
Yu-Wei Zhuo, Jianghong Han, Xinchang Hu, Xueqian Wang, Gang Li, Xiao-Ping Zhang, You He
2025 J jnl
IEEE Trans. Intell. Veh.
Xuan Zhang, Hengxi Zhang, Huaze Tang, Le Liang, Ling Cheng, Xinlei Chen, Wenbo Ding, Xiao-Ping Zhang
2025 J jnl
ACM Comput. Surv.
Menglu Li, Yasaman Ahmadiadli, Xiao-Ping Zhang
2025 A* conf
CVPR
Xubing Ye, Yukang Gan, Yixiao Ge, Xiao-Ping Zhang, Yansong Tang
2025 J jnl
CoRR
Yushan Liu, Shilong Mu, Xintao Chao, Zizhen Li, Yao Mu, Tianxing Chen, Shoujie Li, Chuqiao Lyu, Xiao-Ping Zhang, Wenbo Ding
2025 J jnl
CoRR
Haoyang Wang, Jingao Xu, Chenyu Zhao, Yuhan Cheng, Xuecheng Chen, Chaopeng Hong, Xiao-Ping Zhang, Yunhao Liu, Xinlei Chen
2025 conf
ICC Workshops
Zongyao Zhao, Zhenyu Liu, Wei Dai, Xinke Tang, Xiao-Ping Zhang, Yuhan Dong
2025 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Jun Zhou, Kai Chen, Mingqiang Wei, Xiao-Ping Zhang, Qi Dou, Harry Qin
2025 J jnl
IEEE Trans. Mob. Comput.
Nan Zhou, Yuxuan Liu, Haoyang Wang, Fanhang Man, Jingao Xu, Fan Dang, Chaopeng Hong, Yunhao Liu, Xiao-Ping Zhang, Yali Song, Qiuhua Wang, Xinlei Chen
2025 J jnl
IEEE Signal Process. Lett.
Mingke Feng, Guangtao Zhai, Xiao-Ping Zhang, Menghan Hu
2025 J jnl
IEEE Trans. Multim.
Yunzhi Teng, Xiaoke Huang, Kejie Li, Xiao-Ping Zhang, Yansong Tang
2025 J jnl
IEEE Trans. Multim.
Kejun Wu, Zhenxing Li, You Yang, Qiong Liu, Xiao-Ping Zhang
2025 A conf
IROS
Xintao Chao, Shilong Mu, Yushan Liu, Shoujie Li, Chuqiao Lyu, Xiao-Ping Zhang, Wenbo Ding
2025 J jnl
CoRR
Chenyu Zhao, Jingao Xu, Ciyu Ruan, Haoyang Wang, Shengbo Wang, Jiaqi Li, Jirong Zha, Weijie Hong, Zheng Yang, Yunhao Liu, Xiao-Ping Zhang, Xinlei Chen
2025 Misc conf
ICASSP
Wenrui Yang, Xinchun Yu, Xiao-Ping Zhang
2025 A* conf
SIGIR
Junwei Xu, Aisi Zheng, Ling Ding, Huangbin Zhang, Zhengwei Deng, Qun Yu, Xiao-Ping Zhang
2025 J jnl
IEEE Trans. Multim.
Ji-Feng Luo, Yuzhen Chen, Kaixun Zhang, Xudong An, Menghan Hu, Guangtao Zhai, Xiao-Ping Zhang
2025 J jnl
IEEE Trans. Veh. Technol.
Zongyao Zhao, Zhenyu Liu, Rui Jiang, Zhongyi Li, Xiao-Ping Zhang, Xinke Tang, Yuhan Dong
2025 J jnl
IEEE Trans. Image Process.
Yongzhen Wang, Yongjun Li, Zhuoran Zheng, Xiao-Ping Zhang, Mingqiang Wei
2025 J jnl
CoRR
Huining Yuan, Zelai Xu, Zheyue Tan, Xiangmin Yi, Mo Guang, Kaiwen Long, Haojia Hui, Boxun Li, Xinlei Chen, Bo Zhao, Xiao-Ping Zhang, Chao Yu, Yu Wang
2025 Misc conf
ICASSP
Enze Zhang, Huaze Tang, Xiao-Ping Zhang, Wenbo Ding
2025 J jnl
IEEE Trans. Green Commun. Netw.
Rong Yan, Ziyang Guo, Peng Liu, Qiao Lan, Xiao-Ping Zhang, Yuhan Dong
2025 J jnl
IEEE Signal Process. Mag.
Songjie Yang, Hua Chen, Wei Liu, Xiao-Ping Zhang, Chau Yuen
2025 A* conf
ACM Multimedia
Weichen Zhang, Zile Zhou, Xin Zeng, Xuchen Liu, Jianjie Fang, Chen Gao, Jinqiang Cui, Yong Li, Xinlei Chen, Xiao-Ping Zhang
2025 J jnl
CoRR
Weichen Zhan, Zile Zhou, Zhiheng Zheng, Chen Gao, Jinqiang Cui, Yong Li, Xinlei Chen, Xiao-Ping Zhang
2025 J jnl
IEEE Trans. Multim.
Xinxin Zhang, Xudong Tan, Yan Zhu, Mei Zhou, Menghan Hu, Zhanzhan Cheng, Nengfeng Qian, Changyin Wu, Guangtao Zhai, Xiao-Ping Zhang
2025 J jnl
CoRR
Nan Zhou, Huandong Wang, Jiahao Li, Yang Li, Xiao-Ping Zhang, Yong Li, Xinlei Chen
2025 J jnl
IEEE Signal Process. Lett.
Yuze Li, Zhenyu Liu, Xiao-Ping Zhang
2025 J jnl
CoRR
Nan Zhou, Zuxin Li, Fanhang Man, Xuecheng Chen, Susu Xu, Fan Dang, Chaopeng Hong, Yunhao Liu, Xiao-Ping Zhang, Xinlei Chen
2025 J jnl
IEEE J. Sel. Top. Signal Process.
Chunyi Li, Jianbo Zhang, Zicheng Zhang, Haoning Wu, Yuan Tian, Wei Sun, Guo Lu, Xiongkuo Min, Xiaohong Liu, Weisi Lin, Xiao-Ping Zhang, Guangtao Zhai
2025 J jnl
IEEE Trans. Intell. Transp. Syst.
Jiamei Xiong, Xuefeng Yan, Yongzhen Wang, Wei Zhao, Xiao-Ping Zhang, Mingqiang Wei
2025 Misc conf
ICASSP
Hanbing Liu, Huaze Tang, Yanru Wu, Yang Li, Xiao-Ping Zhang
2025 J jnl
IEEE Wirel. Commun. Lett.
Kun Wu, Yuhan Dong, Xinchun Yu, Jian Song, Xiao-Ping Zhang
2025 J jnl
CoRR
Nan Zhou, Weijie Hong, Huandong Wang, Jianfeng Zheng, Qiuhua Wang, Yali Song, Xiao-Ping Zhang, Yong Li, Xinlei Chen
2025 J jnl
IEEE Internet Things J.
Yoga Suhas Kuruba Manjunath, Lian Zhao, Xiao-Ping Zhang
2025 J jnl
IEEE Trans. Mob. Comput.
Ji Luo, Zijian Xiao, Zuxin Li, Xuecheng Chen, Chaopeng Hong, Xiao-Ping Zhang, Xinlei Chen
2025 J jnl
IEEE Trans. Consumer Electron.
Xianghe Wang, Shaoyang Song, Zekai Zhang, Xiangwang Hou, Zhiying Li, Tianyu Xing, Xiao-Ping Zhang
2025 A conf
CIKM
Hongyi Chen, Jingtao Ding, Xiaojun Liang, Yong Li, Xiao-Ping Zhang
2025 J jnl
IEEE Trans. Mob. Comput.
Rongye Shi, Xin Yu, Yandong Wang, Yongkai Tian, Zhenyu Liu, Wenjun Wu, Xiao-Ping Zhang, Manuela M. Veloso
2025 J jnl
IEEE Commun. Surv. Tutorials
Ziyuan Wang, Jun Du, Xiangwang Hou, Jingjing Wang, Chunxiao Jiang, Xiao-Ping Zhang, Yong Ren
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Yang Tan, Enming Zhang, Yang Li, Shao-Lun Huang, Xiao-Ping Zhang
2024 J jnl
IEEE Internet Things J.
Zewei Ding, Qijuan Wu, Mingyu Wang, Jingjing Liu, Xiaoyang Zeng, Wenhong Li, Wei Huang, Zhi Liu, Xiao-Ping Zhang
2024 J jnl
ACM Comput. Surv.
Zhipeng Su, Yixiong Zhang, Jianghong Shi, Xiao-Ping Zhang
2024 J jnl
CoRR
Zixuan Zhou, Xuefei Ning, Ke Hong, Tianyu Fu, Jiaming Xu, Shiyao Li, Yuming Lou, Luning Wang, Zhihang Yuan, Xiuhong Li, Shengen Yan, Guohao Dai, Xiao-Ping Zhang, Yuhan Dong, Yu Wang
2024 J jnl
IEEE Trans. Mob. Comput.
Zihao Zhao, Yuzhu Mao, Zhenpeng Shi, Yang Liu, Tian Lan, Wenbo Ding, Xiao-Ping Zhang
2024 J jnl
CoRR
Xubing Ye, Yukang Gan, Yixiao Ge, Xiao-Ping Zhang, Yansong Tang
2024 J jnl
IEEE Access
Zonghao Liu, Huan Zhang, Mi Zhou, Shuming Jiao, Xiao-Ping Zhang, Zihan Geng
2024 J jnl
CoRR
Zongyao Zhao, Yuhan Dong, Tiankuo Wei, Xiao-Ping Zhang, Xinke Tang, Zhenyu Liu
2024 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Yixuan Gao, Xiongkuo Min, Yucheng Zhu, Xiao-Ping Zhang, Guangtao Zhai
2024 J jnl
Medical Image Anal.
Yuanzheng Ma, Wangting Zhou, Rui Ma, Erqi Wang, Sihua Yang, Yansong Tang, Xiao-Ping Zhang, Xun Guan
2024 conf
VTC Spring
Rong Yan, Mingjun Du, Xiao-Ping Zhang, Yuhan Dong
2024 A conf
MobiSys
Jiarong Li, Qinghao Xu, Qingyang Zhu, Zixuan Xie, Zhancong Xu, Changshuo Ge, Liguang Ruan, H. Y. Fu, Xiaojun Liang, Wenbo Ding, Weihua Gui, Xiao-Ping Zhang
2024 A conf
ICME
Ling Li, Junliang Xing, Xinchun Yu, Xiao-Ping Zhang
2024 J jnl
CoRR
Yoga Suhas Kuruba Manjunath, Austin Wissborn, Mathew Szymanowski, Mushu Li, Lian Zhao, Xiao-Ping Zhang
2024 A* conf
ICRA
Shilong Mu, Runze Zhao, Zenan Lin, Yan Huang, Shoujie Li, Chenchang Li, Xiao-Ping Zhang, Wenbo Ding
2024 J jnl
CoRR
Shilong Mu, Runze Zhao, Zenan Lin, Yan Huang, Shoujie Li, Chenchang Li, Xiao-Ping Zhang, Wenbo Ding
2024 J jnl
IEEE Trans. Image Process.
Qian Hu, Xinya Wang, Junjun Jiang, Xiao-Ping Zhang, Jiayi Ma
2024 J jnl
CoRR
Siqi Ping, Yuzhu Mao, Yang Liu, Xiao-Ping Zhang, Wenbo Ding
2024 J jnl
CoRR
Wenhao Jiang, Duo Li, Menghan Hu, Guangtao Zhai, Xiaokang Yang, Xiao-Ping Zhang
2024 conf
INFOCOM (Workshops)
Xuecheng Chen, Zijian Xiao, Yuhan Cheng, Chen-Chun Hsia, Haoyang Wang, Fan Dang, Jingao Xu, Xiao-Ping Zhang, Yunhao Liu, Xinlei Chen
2024 J jnl
IEEE Trans. Geosci. Remote. Sens.
Zikuan Li, Kaijun Zhang, Zhoutao Wang, Sibo Wu, Xiao-Ping Zhang, Mingqiang Wei, Jun Wang
2024 A* conf
MobiCom
Chenyu Zhao, Ciyu Ruan, Jingao Xu, Haoyang Wang, Shengbo Wang, Jiaqi Li, Jirong Zha, Zheng Yang, Yunhao Liu, Xiao-Ping Zhang, Xinlei Chen
2024 J jnl
CoRR
Shoujie Li, Ran Yu, Tong Wu, Junwen Zhong, Xiao-Ping Zhang, Wenbo Ding
2024 J jnl
IEEE Open J. Commun. Soc.
Daniel Mawunyo Doe, Jing Li, Dusit Niyato, Yuqing Hu, Jun Li, Zhen Gao, Xiao-Ping Zhang, Zhu Han
2024 J jnl
IEEE Trans. Multim.
Kejun Wu, You Yang, Qiong Liu, Gangyi Jiang, Xiao-Ping Zhang
2024 J jnl
Digit. Signal Process.
Chenxin Liang, Jiarong Li, Sicong Liu, Fang Yang, Yuhan Dong, Jian Song, Xiao-Ping Zhang, Wenbo Ding
2024 A conf
INTERSPEECH
Menglu Li, Xiao-Ping Zhang
2024 J jnl
IEEE Wirel. Commun. Lett.
Zongyao Zhao, Long Zhang, Rui Jiang, Xiao-Ping Zhang, Xinke Tang, Yuhan Dong
2024 conf
VTC Fall
Yunan Dong, Jianhua Pei, Kun Wu, Yuhan Dong, Xiao-Ping Zhang
2024 Misc conf
ICASSP
Xiao Liu, Guangyi Chen, Yansong Tang, Guangrun Wang, Xiao-Ping Zhang, Ser-Nam Lim
2024 Misc conf
ICASSP
Hua Jiang, Yixiong Chen, Li Liu, Xiaoguang Han, Xiao-Ping Zhang
2024 J jnl
IEEE Trans. Multim.
Xudong Tan, Menghan Hu, Guangtao Zhai, Yan Zhu, Wenfang Li, Xiao-Ping Zhang
2024 J jnl
IEEE Trans. Robotics
Shoujie Li, Haixin Yu, Guoping Pan, Huaze Tang, Jiawei Zhang, Linqi Ye, Xiao-Ping Zhang, Wenbo Ding
2024 A* conf
MobiCom
Mingjun Du, Sihui Zheng, Xiao-Ping Zhang, Yuhan Dong
2024 A conf
MobiSys
Yuxuan Liu, Haoyang Wang, Fanhang Man, Jingao Xu, Fan Dang, Yunhao Liu, Xiao-Ping Zhang, Xinlei Chen
2024 C conf
ISCAS
Fan Huang, Xiongkuo Min, Yuqin Cao, Xiao-Ping Zhang, Guangtao Zhai
2024 J jnl
IEEE Internet Things J.
Xueting Xu, Ao Peng, Xuemin Hong, Yixiong Zhang, Xiao-Ping Zhang
2024 J jnl
IEEE Trans. Signal Process.
Min Tao, Xiao-Ping Zhang, Zi-Hao Xia
2024 J jnl
CoRR
Zhaojian Yu, Yinghao Wu, Zhuotao Deng, Yansong Tang, Xiao-Ping Zhang
2024 Misc conf
ICASSP
Hengxi Zhang, Zhendong Shi, Yuanquan Hu, Wenbo Ding, Ercan E. Kuruoglu, Xiao-Ping Zhang
2024 J jnl
IEEE Wirel. Commun. Lett.
Kun Wu, Yuhan Dong, Xinchun Yu, Jian Song, Xiao-Ping Zhang
2024 A conf
MobiSys
Jiarong Li, Chenxin Liang, Zixuan Xie, Xiaojun Liang, Wenbo Ding, Jian Song, Xiao-Ping Zhang
2024 B conf
ICPADS
Jiarong Li, Qinghao Xu, Zhancong Xu, Changshuo Ge, Liguang Ruan, Xiaojun Liang, Wenbo Ding, Weihua Gui, Xiao-Ping Zhang
2024 A* conf
INFOCOM
Zuxin Li, Fanhang Man, Xuecheng Chen, Susu Xu, Fan Dang, Xiao-Ping Zhang, Xinlei Chen
2024 J jnl
IEEE Trans. Broadcast.
Zicheng Zhang, Yingjie Zhou, Long Teng, Wei Sun, Chunyi Li, Xiongkuo Min, Xiao-Ping Zhang, Guangtao Zhai
2024 J jnl
CoRR
Jiamei Xiong, Xuefeng Yan, Yongzhen Wang, Wei Zhao, Xiao-Ping Zhang, Mingqiang Wei
2024 J jnl
CoRR
Yoga Suhas Kuruba Manjunath, Mathew Szymanowski, Austin Wissborn, Mushu Li, Lian Zhao, Xiao-Ping Zhang
2024 J jnl
IEEE Trans. Mob. Comput.
Yuzhu Mao, Zihao Zhao, Meilin Yang, Le Liang, Yang Liu, Wenbo Ding, Tian Lan, Xiao-Ping Zhang
2024 A* conf
ICRA
Ziwu Song, Ran Yu, Xuan Zhang, Kit Wa Sou, Shilong Mu, Dengfeng Peng, Xiao-Ping Zhang, Wenbo Ding
2024 J jnl
CoRR
Ziwu Song, Ran Yu, Xuan Zhang, Kit Wa Sou, Shilong Mu, Dengfeng Peng, Xiao-Ping Zhang, Wenbo Ding
2024 J jnl
IEEE Internet Things J.
Xuecheng Chen, Zijian Xiao, Yuhan Cheng, Chen-Chun Hsia, Haoyang Wang, Jingao Xu, Susu Xu, Fan Dang, Xiao-Ping Zhang, Yunhao Liu, Xinlei Chen
2024 B conf
GLOBECOM
Shuang Tang, Weijie Dai, Jianhua Pei, Xiao-Ping Zhang, Jian Song, Yuhan Dong
2024 J jnl
CoRR
Yuhan Cheng, Xuecheng Chen, Yixuan Yang, Haoyang Wang, Jingao Xu, Chaopeng Hong, Susu Xu, Xiao-Ping Zhang, Yunhao Liu, Xinlei Chen
2024 J jnl
Signal Process.
Rui Li, Xueqian Wang, Gang Li, Xiao-Ping Zhang
2024 J jnl
CoRR
Yingjie Zhou, Zicheng Zhang, Wei Sun, Xiaohong Liu, Xiongkuo Min, Zhihua Wang, Xiao-Ping Zhang, Guangtao Zhai
2024 B conf
ICIP
Yingjie Zhou, Zicheng Zhang, Wei Sun, Xiaohong Liu, Xiongkuo Min, Zhihua Wang, Xiao-Ping Zhang, Guangtao Zhai
2024 J jnl
CoRR
Yoga Suhas Kuruba Manjunath, Sihao Zhao, Xiao-Ping Zhang, Lian Zhao
2024 J jnl
IEEE Trans. Netw. Serv. Manag.
Yoga Suhas Kuruba Manjunath, Sihao Zhao, Xiao-Ping Zhang, Lian Zhao
2024 A* conf
INFOCOM
Haoyang Wang, Jingao Xu, Chenyu Zhao, Zihong Lu, Yuhan Cheng, Xuecheng Chen, Xiao-Ping Zhang, Yunhao Liu, Xinlei Chen
2024 J jnl
CoRR
Haoyang Wang, Jingao Xu, Chenyu Zhao, Zihong Lu, Yuhan Cheng, Xuecheng Chen, Xiao-Ping Zhang, Yunhao Liu, Xinlei Chen
2024 A* conf
ACM Multimedia
Ling Li, Wenrui Yang, Xinchun Yu, Junliang Xing, Xiao-Ping Zhang
2024 J jnl
IEEE Trans. Mob. Comput.
Ziyuan Wang, Jun Du, Chunxiao Jiang, Yong Ren, Xiao-Ping Zhang
2024 J jnl
IEEE Trans. Image Process.
Yongzhen Wang, Xuefeng Yan, Fu Lee Wang, Haoran Xie, Wenhan Yang, Xiao-Ping Zhang, Jing Qin, Mingqiang Wei
2024 J jnl
CoRR
Kaizhou Li, Jindong Gu, Xinchun Yu, Junjie Cao, Yansong Tang, Xiao-Ping Zhang
2024 J jnl
CoRR
Kuo Yang, Duo Li, Menghan Hu, Guangtao Zhai, Xiaokang Yang, Xiao-Ping Zhang
2024 Misc conf
ICASSP
Chin Choy Chai, Xiao-Ping Zhang
2024 J jnl
IEEE J. Sel. Top. Signal Process.
Shoujie Li, Zihan Wang, Changsheng Wu, Xiang Li, Shan Luo, Bin Fang, Fuchun Sun, Xiao-Ping Zhang, Wenbo Ding
2024 J jnl
CoRR
Shoujie Li, Zihan Wang, Changsheng Wu, Xiang Li, Shan Luo, Bin Fang, Fuchun Sun, Xiao-Ping Zhang, Wenbo Ding
2023 J jnl
CoRR
Zihao Zhao, Yuzhu Mao, Zhenpeng Shi, Yang Liu, Tian Lan, Wenbo Ding, Xiao-Ping Zhang
2023 J jnl
IEEE Trans. Multim.
Hang Liu, Menghan Hu, Yuzhen Chen, Qingli Li, Guangtao Zhai, Simon X. Yang, Xiao-Ping Zhang, Xiaokang Yang
2023 A conf
IROS
Huaze Tang, Hengxi Zhang, Zhenpeng Shi, Xinlei Chen, Wenbo Ding, Xiao-Ping Zhang
2023 J jnl
IEEE Trans. Medical Imaging
Yifei Guo, Menghan Hu, Xiongkuo Min, Yan Wang, Min Dai, Guangtao Zhai, Xiao-Ping Zhang, Xiaokang Yang
2023 conf
UbiComp/ISWC Adjunct
Hengxi Zhang, Huaze Tang, Wenbo Ding, Xiao-Ping Zhang
2023 J jnl
CoRR
Hengxi Zhang, Huaze Tang, Wenbo Ding, Xiao-Ping Zhang
2023 J jnl
CoRR
Chengyu Zheng, Peng Li, Xiao-Ping Zhang, Xuequan Lu, Mingqiang Wei
2023 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Ting Yao, Yehao Li, Yingwei Pan, Yu Wang, Xiao-Ping Zhang, Tao Mei
2023 J jnl
IEEE Signal Process. Lett.
Wenyu Zhang, Xiangming Li, Yunzhu Chen, Neng Ye, Xiao-Ping Zhang
2023 J jnl
CoRR
Zihao Zhao, Yang Liu, Wenbo Ding, Xiao-Ping Zhang
2023 conf
UbiComp/ISWC Adjunct
Ji Luo, Yiling Hu, Chengzhao Yu, Chaopeng Hong, Xiao-Ping Zhang, Xinlei Chen
2023 J jnl
IEEE Trans. Multim.
Kejun Wu, You Yang, Qiong Liu, Xiao-Ping Zhang
2023 conf
IFTC (2)
Kaixun Zhang, Yuzhen Chen, Ji-Feng Luo, Menghan Hu, Xudong An, Guangtao Zhai, Xiao-Ping Zhang
2023 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Yixuan Gao, Xiongkuo Min, Wenhan Zhu, Xiao-Ping Zhang, Guangtao Zhai
2023 J jnl
Comput. Vis. Image Underst.
Xingyu Jiang, Shihua Zhang, Xiao-Ping Zhang, Jiayi Ma
2023 J jnl
IEEE Internet Things J.
Shuang Li, Xiao-Ping Zhang, Ding-Liang Ruan, Hao Zeng
2023 Misc conf
ICASSP
Chin Choy Chai, Xiao-Ping Zhang
2023 J jnl
IEEE Trans. Intell. Veh.
Dawei Chen, Yifei Zhu, Dan Wang, Haoxin Wang, Jiang Xie, Xiao-Ping Zhang, Zhu Han
2023 J jnl
CoRR
Bo Zhang, Boyu Jiang, Rong Zheng, Xiao-Ping Zhang, Jun Li, Qiang Xu
2023 J jnl
ACM Trans. Internet Things
Bo Zhang, Boyu Jiang, Rong Zheng, Xiao-Ping Zhang, Jun Li, Qiang Xu
2023 J jnl
Adv. Intell. Syst.
Xinxin Zhang, Menghan Hu, Yudong Zhang, Guangtao Zhai, Xiao-Ping Zhang
2023 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Haoran Zhou, Honghua Chen, Yingkui Zhang, Mingqiang Wei, Haoran Xie, Jun Wang, Tong Lu, Jing Qin, Xiao-Ping Zhang
2023 conf
UbiComp/ISWC Adjunct
Jiyuan Ren, Yanggang Xu, Zuxin Li, Chaopeng Hong, Xiao-Ping Zhang, Xinlei Chen
2023 conf
UbiComp/ISWC Adjunct
Chenyu Zhao, Haoyang Wang, Jiaqi Li, Fanhang Man, Shilong Mu, Wenbo Ding, Xiao-Ping Zhang, Xinlei Chen
2023 J jnl
Comput. Biol. Medicine
Chunjun Hua, Yue Wu, Yiqiao Shi, Menghan Hu, Rong Xie, Guangtao Zhai, Xiao-Ping Zhang
2023 J jnl
CoRR
Hengxi Zhang, Zhendong Shi, Yuanquan Hu, Wenbo Ding, Ercan E. Kuruoglu, Xiao-Ping Zhang
2023 Misc conf
ICASSP
Rui Li, Xueqian Wang, Gang Li, Xiao-Ping Zhang
2023 A* conf
ICCV
Guangyi Chen, Xiao Liu, Guangrun Wang, Kun Zhang, Philip H. S. Torr, Xiao-Ping Zhang, Yansong Tang
2023 J jnl
CoRR
Guangyi Chen, Xiao Liu, Guangrun Wang, Kun Zhang, Philip H. S. Torr, Xiao-Ping Zhang, Yansong Tang
2023 J jnl
IEEE Trans. Veh. Technol.
Yuhan Kang, Haoxin Wang, BaekGyu Kim, Jiang (Linda) Xie, Xiao-Ping Zhang, Zhu Han
2023 B conf
GLOBECOM
Chin Choy Chai, Xiao-Ping Zhang
2023 Misc conf
ICASSP
Xudong Tan, Menghan Hu, Guangtao Zhai, Yan Zhu, Wenfang Li, Xiao-Ping Zhang
2023 J jnl
Inf. Fusion
Dong Zhu, Xueqian Wang, Gang Li, Xiao-Ping Zhang
2023 J jnl
IEEE Trans. Robotics
Shoujie Li, Haixin Yu, Wenbo Ding, Houde Liu, Linqi Ye, Chongkun Xia, Xueqian Wang, Xiao-Ping Zhang
2023 A conf
IROS
Shoujie Li, Mingshan He, Wenbo Ding, Linqi Ye, Xueqian Wang, Junbo Tan, Jinqiu Yuan, Xiao-Ping Zhang
2023 J jnl
CoRR
Shoujie Li, Mingshan He, Wenbo Ding, Linqi Ye, Xueqian Wang, Junbo Tan, Jinqiu Yuan, Xiao-Ping Zhang
2023 conf
UbiComp/ISWC Adjunct
Kai-Chong Lei, Kit Wa Sou, Wang Sing Chan, Jiayi Yan, Siqi Ping, Dengfeng Peng, Wenbo Ding, Xiao-Ping Zhang
2023 J jnl
CoRR
Kai-Chong Lei, Kit Wa Sou, Wang Sing Chan, Jiayi Yan, Siqi Ping, Dengfeng Peng, Wenbo Ding, Xiao-Ping Zhang
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Jianghong Han, Gang Li, Kunpeng Wang, Meiya Duan, Xiao-Ping Zhang
2022 conf
DDAM@MM
Menglu Li, Yasaman Ahmadiadli, Xiao-Ping Zhang
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Yaowen Li, Gang Li, Yu Liu, Xiao-Ping Zhang, You He
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Yaowen Li, Gang Li, Yu Liu, Xiao-Ping Zhang, You He
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Xiao Jiang, Gang Li, Xiao-Ping Zhang, You He
2022 J jnl
CoRR
Zhaofan Qiu, Ting Yao, Chong-Wah Ngo, Xiao-Ping Zhang, Dong Wu, Tao Mei
2022 J jnl
IEEE Signal Process. Lett.
Sihao Zhao, Ningyan Guo, Xiao-Ping Zhang, Xiaowei Cui, Mingquan Lu
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Yongzhen Wang, Xuefeng Yan, Donghai Guan, Mingqiang Wei, Yiping Chen, Xiao-Ping Zhang, Jonathan Li
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Meiqi Gong, Jiayi Ma, Han Xu, Xin Tian, Xiao-Ping Zhang
2022 J jnl
IEEE Trans. Signal Process.
Jun Zhang, Ming Bao, Xiao-Ping Zhang, Zhifei Chen, Jianhua Yang
2022 J jnl
Neural Networks
Xinya Wang, Jiayi Ma, Junjun Jiang, Xiao-Ping Zhang
2022 J jnl
CoRR
Ting Yao, Yehao Li, Yingwei Pan, Yu Wang, Xiao-Ping Zhang, Tao Mei
2022 J jnl
IEEE Internet Things J.
Bo Wu, Xiao-Ping Zhang
2022 J jnl
IEEE Trans. Image Process.
Peng Li, Xuefeng Yan, Hongwei Zhu, Mingqiang Wei, Xiao-Ping Zhang, Jing Qin
2022 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Kejun Wu, You Yang, Qiong Liu, Xiao-Ping Zhang
2022 J jnl
IEEE Internet Things J.
Cheng Yang, Menghan Hu, Guangtao Zhai, Xiao-Ping Zhang
2022 conf
VTC Fall
Hengxi Zhang, Huaze Tang, Yuanquan Hu, Xiaoli Wei, Chenye Wu, Wenbo Ding, Xiao-Ping Zhang
2022 B conf
ICIP
Jie Li, Guangtao Zhai, Yucheng Zhu, Jun Zhou, Xiao-Ping Zhang
2022 A* conf
ACM Multimedia
Yixuan Gao, Xiongkuo Min, Yucheng Zhu, Jing Li, Xiao-Ping Zhang, Guangtao Zhai
2022 B conf
ISIT
Chin Choy Chai, Xiao-Ping Zhang
2022 J jnl
Inf. Fusion
Xinya Wang, Jiayi Ma, Peng Yi, Xin Tian, Junjun Jiang, Xiao-Ping Zhang
2022 conf
UbiComp/ISWC Adjunct
Zenan Lin, Kai-Chong Lei, Shilong Mu, Ziwu Song, Yuan Dai, Wenbo Ding, Xiao-Ping Zhang
2022 J jnl
IEEE Internet Things J.
Wei Zhao, Jian-Kang Zhang, Xiao-Ping Zhang, Rong Zheng
2022 J jnl
IEEE Internet Things J.
Wenqiong Zhang, Jun Zhang, Ming Bao, Xiao-Ping Zhang, Xiaodong Li
2022 J jnl
IEEE Trans. Signal Process.
Ningyan Guo, Sihao Zhao, Xiao-Ping Zhang, Zheng Yao, Xiaowei Cui, Mingquan Lu
2022 J jnl
Neurocomputing
Zhipeng Su, Yixiong Zhang, Xiao-Ping Zhang, Feng Qi
2022 J jnl
CoRR
Yixuan Gao, Xiongkuo Min, Wenhan Zhu, Xiao-Ping Zhang, Guangtao Zhai
2022 J jnl
IEEE Robotics Autom. Lett.
Xiaosa Li, Chengyue Lu, Ziwu Song, Wenbo Ding, Xiao-Ping Zhang
2022 J jnl
Displays
Xiaohui Gong, Xiao Li, Li Ma, Weilin Tong, Fangyu Shi, Menghan Hu, Xiao-Ping Zhang, Guangjun Yu, Cheng Yang
2022 J jnl
Inf. Fusion
Xueqian Wang, Dong Zhu, Gang Li, Xiao-Ping Zhang, You He
2022 J jnl
IEEE Trans. Cogn. Dev. Syst.
Zhipeng Su, Yixiong Zhang, Jianghong Shi, Xiao-Ping Zhang
2022 J jnl
CoRR
Haoran Zhou, Honghua Chen, Yingkui Zhang, Mingqiang Wei, Haoran Xie, Jun Wang, Tong Lu, Jing Qin, Xiao-Ping Zhang
2022 J jnl
IEEE Trans. Multim.
Min Li, Zhenjiang Miao, Xiao-Ping Zhang, Wanru Xu, Cong Ma, Ningwei Xie
2022 J jnl
IEEE Geosci. Remote. Sens. Lett.
Zhizhuo Jiang, You He, Gang Li, Xiao-Ping Zhang
2022 J jnl
Pattern Recognit.
Xingyu Jiang, Yifan Xia, Xiao-Ping Zhang, Jiayi Ma
2022 J jnl
CoRR
Yuzhu Mao, Zihao Zhao, Meilin Yang, Le Liang, Yang Liu, Wenbo Ding, Tian Lan, Xiao-Ping Zhang
2022 B conf
GLOBECOM
Yoga Suhas Kuruba Manjunath, Sihao Zhao, Hatem Abou-Zeid, Akram Bin Sediq, Ramy Atawia, Xiao-Ping Zhang
2022 J jnl
CoRR
Yiyang Shen, Sen Deng, Wenhan Yang, Mingqiang Wei, Haoran Xie, Xiao-Ping Zhang, Jing Qin, Meng Wang
2022 J jnl
IEEE Internet Things J.
Sihao Zhao, Ningyan Guo, Xiao-Ping Zhang, Xiaowei Cui, Mingquan Lu
2022 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Ningwei Xie, Zhenjiang Miao, Xiao-Ping Zhang, Wanru Xu, Min Li, Jiaji Wang
2022 J jnl
IEEE Trans. Geosci. Remote. Sens.
Dong Zhu, Gang Li, Xiao-Ping Zhang
2022 Misc conf
ICASSP
Yixiong Zhang, Zhipeng Su, Feng Qi, Jianyang Zhou, Xiao-Ping Zhang
2022 J jnl
ACM Comput. Surv.
Hang Du, Hailin Shi, Dan Zeng, Xiao-Ping Zhang, Tao Mei
2022 J jnl
CoRR
Shoujie Li, Haixin Yu, Wenbo Ding, Houde Liu, Linqi Ye, Chongkun Xia, Xueqian Wang, Xiao-Ping Zhang
2022 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Yiping Chen, Zhipeng Luo, Wen Li, Haojia Lin, Abdul Nurunnabi, Yaojin Lin, Cheng Wang, Xiao-Ping Zhang, Jonathan Li
2022 J jnl
IEEE Internet Things J.
Wenqiong Zhang, Jianfei Tong, Ming Bao, Xiao-Ping Zhang, Xiaodong Li
2021 J jnl
IEEE Internet Things J.
Sihao Zhao, Xiao-Ping Zhang, Xiaowei Cui, Mingquan Lu
2021 J jnl
IEEE Signal Process. Lett.
Xueqian Wang, Gang Li, Xiao-Ping Zhang, You He
2021 C conf
FUSION
Xueqian Wang, Dong Zhu, Gang Li, Xiao-Ping Zhang
2021 J jnl
IEEE Trans. Multim.
Shuai Zheng, Jian Chen, Xiao-Ping Zhang, Yonghong Kuo
2021 J jnl
IEEE Internet Things J.
Sihao Zhao, Xiao-Ping Zhang, Xiaowei Cui, Mingquan Lu
2021 J jnl
CoRR
Min Tao, Xiao-Ping Zhang
2021 Misc conf
ICASSP
Min Li, Zhenjiang Miao, Xiao-Ping Zhang, Wanru Xu
2021 J jnl
CoRR
Hang Liu, Menghan Hu, Yuzhen Chen, Qingli Li, Guangtao Zhai, Simon X. Yang, Xiao-Ping Zhang, Xiaokang Yang
2021 J jnl
CoRR
Xiaodong Chen, Xinchen Liu, Wu Liu, Xiao-Ping Zhang, Yongdong Zhang, Tao Mei
2021 J jnl
Biomed. Signal Process. Control.
Garima Sharma, Xiao-Ping Zhang, Karthikeyan Umapathy, Sridhar Krishnan
2021 A* conf
CVPR
Zhaofan Qiu, Ting Yao, Chong-Wah Ngo, Xiao-Ping Zhang, Dong Wu, Tao Mei
2021 conf
CICAI (2)
Chang Yao, Jingyu Tang, Menghan Hu, Yue Wu, Wenyi Guo, Qingli Li, Xiao-Ping Zhang
2021 conf
CICAI
Qiang Lu, Guangtao Zhai, Yucheng Zhu, Xiongkuo Min, Tao Wang, Xiao-Ping Zhang
2021 J jnl
IEEE Trans. Signal Process.
Shuang Li, Xiao-Ping Zhang
2021 A* conf
IJCAI
Sen Deng, Yidan Feng, Mingqiang Wei, Haoran Xie, Yiping Chen, Jonathan Li, Xiao-Ping Zhang, Jing Qin
2021 J jnl
CoRR
Sen Deng, Yidan Feng, Mingqiang Wei, Haoran Xie, Yiping Chen, Jonathan Li, Xiao-Ping Zhang, Jing Qin
2021 A* conf
ICCV
Xiaodong Chen, Xinchen Liu, Wu Liu, Xiao-Ping Zhang, Yongdong Zhang, Tao Mei
2021 A* conf
AAAI
Tianyu Hua, Hongdong Zheng, Yalong Bai, Wei Zhang, Xiao-Ping Zhang, Tao Mei
2021 J jnl
CoRR
Tianyu Hua, Hongdong Zheng, Yalong Bai, Wei Zhang, Xiao-Ping Zhang, Tao Mei
2021 J jnl
IEEE Trans. Signal Process.
Yixiong Zhang, Yangming Xie, Xin Li, Xiao-Ping Zhang, Jianyang Zhou
2021 C conf
IGARSS
Dong Zhu, Xueqian Wang, Gang Li, Xiao-Ping Zhang
2021 Misc conf
ICASSP
Yunlu Wang, Cheng Yang, Menghan Hu, Jian Zhang, Qingli Li, Guangtao Zhai, Xiao-Ping Zhang
2021 C conf
VCIP
Jiaomin Yue, Qiang Lu, Dandan Zhu, Xiongkuo Min, Xiao-Ping Zhang, Guangtao Zhai
2021 conf
APSIPA ASC
Cheng Yang, Fen Wang, Minxiang Ye, Guangtao Zhai, Xiao-Ping Zhang, Vladimir Stankovic, Lina Stankovic
2021 B conf
ICIP
Yixuan Gao, Xiongkuo Min, Wenhan Zhu, Xiao-Ping Zhang, Guangtao Zhai
2021 J jnl
CoRR
Zhipeng Su, Yixiong Zhang, Xiao-Ping Zhang, Feng Qi
2021 J jnl
IEEE Trans. Computational Imaging
Jianghong Han, Gang Li, Xiao-Ping Zhang
2021 J jnl
IEEE Internet Things J.
Sihao Zhao, Xiao-Ping Zhang, Xiaowei Cui, Mingquan Lu
2021 Misc conf
ICASSP
Sihao Zhao, Xiao-Ping Zhang, Xiaowei Cui, Mingquan Lu
2021 J jnl
IEEE Trans. Veh. Technol.
Sihao Zhao, Xiao-Ping Zhang, Xiaowei Cui, Mingquan Lu
2021 Misc conf
ICASSP
Wenhan Zhu, Guangtao Zhai, Xiongkuo Min, Xiaokang Yang, Xiao-Ping Zhang
2021 J jnl
IEEE Trans. Multim.
Li Liu, Gang Feng, Denis Beautemps, Xiao-Ping Zhang
2021 J jnl
IEEE Internet Things J.
Yunlu Wang, Menghan Hu, Chaohua Yang, Na Li, Jian Zhang, Qingli Li, Guangtao Zhai, Simon X. Yang, Xiao-Ping Zhang, Xiaokang Yang
2021 J jnl
IEEE Signal Process. Lett.
Sihao Zhao, Xiao-Ping Zhang, Xiaowei Cui, Mingquan Lu
2021 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Zhizhuo Jiang, Xueqian Wang, Gang Li, Xiao-Ping Zhang, You He
2021 conf
WF-IoT
Yoga Suhas Kuruba Manjunath, Sihao Zhao, Xiao-Ping Zhang
2021 J jnl
CoRR
Yoga Suhas Kuruba Manjunath, Sihao Zhao, Xiao-Ping Zhang
2021 J jnl
CoRR
Yao Chang, Menghan Hu, Guangtao Zhai, Xiao-Ping Zhang
2021 B conf
GLOBECOM
Sihao Zhao, Hatem Abou-Zeid, Ramy Atawia, Yoga Suhas Kuruba Manjunath, Akram Bin Sediq, Xiao-Ping Zhang
2021 J jnl
CoRR
Sihao Zhao, Hatem Abou-Zeid, Ramy Atawia, Yoga Suhas Kuruba Manjunath, Akram Bin Sediq, Xiao-Ping Zhang
2020 Misc conf
ICASSP
Shuang Li, Xiao-Ping Zhang
2020 J jnl
Pattern Recognit.
Ang Li, Zhenjiang Miao, Yigang Cen, Xiao-Ping Zhang, Linna Zhang, Shiming Chen
2020 J jnl
CoRR
Yunlu Wang, Menghan Hu, Qingli Li, Xiao-Ping Zhang, Guangtao Zhai, Nan Yao
2020 B conf
ICIP
Qiang Lu, Guangtao Zhai, Wenhan Zhu, Yucheng Zhu, Xiongkuo Min, Xiao-Ping Zhang, Hua Yang
2020 J jnl
CoRR
Xiao Jiang, Gang Li, Yu Liu, Xiao-Ping Zhang, You He
2020 J jnl
CoRR
Chang Yao, Jingyu Tang, Menghan Hu, Yue Wu, Wenyi Guo, Qingli Li, Xiao-Ping Zhang
2020 conf
ICME Workshops
Kaihua Song, Ning Liu, Zhongpai Gao, Jiahe Zhang, Guangtao Zhai, Xiao-Ping Zhang
2020 J jnl
CoRR
Chengcheng Jia, Bo Wu, Xiao-Ping Zhang
2020 J jnl
IEEE Trans. Signal Process.
Jun Zhang, Xiangyuan Xu, Zhifei Chen, Ming Bao, Xiao-Ping Zhang, Jianhua Yang
2020 J jnl
CoRR
Yunlu Wang, Cheng Yang, Menghan Hu, Jian Zhang, Qingli Li, Guangtao Zhai, Xiao-Ping Zhang
2020 J jnl
IEEE Trans. Geosci. Remote. Sens.
Xueqian Wang, Gang Li, Xiao-Ping Zhang, You He
2020 J jnl
IEEE Internet Things J.
Yunlu Wang, Menghan Hu, Yuwen Zhou, Qingli Li, Nan Yao, Guangtao Zhai, Xiao-Ping Zhang, Xiaokang Yang
2019 conf
ISPACS
Guangtao Zhai, Xiao-Ping Zhang
2017 conf
GlobalSIP
Arash Mohammadi, Xiao-Ping Zhang, Konstantinos N. Plataniotis
2017 J jnl
IEEE Trans. Signal Process.
Adnan Gavili, Xiao-Ping Zhang
2017 B conf
ICIP
Gao Chen, Gang Li, Yu Liu, Xiao-Ping Zhang, Li Zhang
2016 J jnl
IEEE Trans. Image Process.
Bin Sun, Shutao Li, Xiao-Ping Zhang, Jun Sun
2016 J jnl
IEEE J. Sel. Top. Signal Process.
Jianan Han, Xiao-Ping Zhang, Fang Wang
2016 J jnl
IEEE Trans. Inf. Theory
Yanjun Han, Yuan Shen, Xiao-Ping Zhang, Moe Z. Win, Huadong Meng
2015 conf
ChinaSIP
Wei Xie, Ming Bao, Xiaodong Li, Xiao-Ping Zhang
2015 conf
GlobalSIP
Jianan Han, Xiao-Ping Zhang
2015 J jnl
IEEE Trans. Signal Process.
Xiaoqing Hu, Ming Bao, Xiao-Ping Zhang, Luyang Guan, Yu Hen Hu
2015 J jnl
CoRR
Adnan Gavili, Xiao-Ping Zhang
2015 conf
GlobalSIP
Timothy Little, Xiao-Ping Zhang, Fang Wang
2014 B conf
ICIP
Maryam Nematollahi, Xiao-Ping Zhang
2014 conf
WISMM
Maryam Nematollahi, Xiao-Ping Zhang
2014 J jnl
IEEE Trans. Signal Process.
Hua-Jie Shao, Xiao-Ping Zhang, Zhi Wang
2014 conf
GlobalSIP
Maryam N. Arani, Xiao-Ping Zhang
2014 Misc conf
ICASSP
Hua-Jie Shao, Xiao-Ping Zhang, Zhi Wang
2014 J jnl
CoRR
Yanjun Han, Huadong Meng, Yuan Shen, Xiao-Ping Zhang
2013 J jnl
Signal Image Video Process.
Mohammed Golam Sarwer, Q. M. Jonathan Wu, Xiao-Ping Zhang
2013 J jnl
Pattern Recognit.
Shanwen Zhang, Ying-Ke Lei, Tianbao Dong, Xiao-Ping Zhang
2013 conf
GlobalSIP
Luan Vo, Xiao-Ping Zhang, Fang Wang
2013 J jnl
Wirel. Pers. Commun.
Chengliang Huang, Xiao-Ping Zhang
2013 conf
GlobalSIP
Triloke Rajbhandary, Xiao-Ping Zhang, Fang Wang
2012 C conf
MMSP
Shanwen Zhang, Xiao-Ping Zhang, Chuanlei Zhang
2011 B conf
ICIP
Mohammed Golam Sarwer, Q. M. Jonathan Wu, Xiao-Ping Zhang
2011 J jnl
IEEE Signal Process. Mag.
Xiao-Ping Zhang, David Kedmey
2010 conf
SAPMIA@MM
Junfeng Jiang, Xiao-Ping Zhang
2010 conf
AIEMPro @ ACM Multimedia
Junfeng Jiang, Xiao-Ping Zhang
2010 J jnl
J. Circuits Syst. Comput.
Shulin Wang, Xueling Li, Junfeng Xia, Xiao-Ping Zhang
2008 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Jian Zhou, Xiao-Ping Zhang
2007 J jnl
Int. J. Ad Hoc Ubiquitous Comput.
Yun-Feng Chen, Tao Li, Dong-Ni Gao, Xiaoqin Hu, Xiao-Ping Zhang, Jin Liu
2007 J jnl
Int. J. Semantic Comput.
Xiao-Ping Zhang
2007 conf
ICASSP (3)
Rui Zhang, Xiao-Ping Zhang, Kaihua Liu
2007 conf
ICIP (6)
Rui Zhang, Xiao-Ping Zhang, Ling Guan
2006 conf
ICASSP (5)
Jian Zhou, Xiao-Ping Zhang
2006 conf
ICASSP (4)
Alon Shalev Housfater, Xiao-Ping Zhang, Yifeng Zhou
2006 B conf
ICIP
Jian Zhou, Xiao-Ping Zhang
2005 conf
ICIC (2)
Kan Li, Xiao-Ping Zhang
2005 A* conf
ACM Multimedia
Jian Zhou, Xiao-Ping Zhang
2005 J jnl
IEEE Trans. Multim.
Xiao-Ping Zhang, Kan Li
2005 conf
ICASSP (2)
Jian Zhou, Xiao-Ping Zhang
2004 conf
Multimedia Information Retrieval
Jian Zhou, Xiao-Ping Zhang
2004 B conf
GLOBECOM
Yuhong Wang, Xiao-Ping Zhang
2003 conf
SIP
Kan Li, Xiao-Ping Zhang
2003 conf
ICASSP (4)
Yuhong Wang, Xiao-Ping Zhang
1998 J jnl
IEEE Signal Process. Lett.
Xiao-Ping Zhang, Mita D. Desai
1996 J jnl
IEEE Trans. Signal Process.
Xiao-Ping Zhang, Li-Sheng Tian, Ying-Ning Peng
redb/extractors/decompiler/apk/smali_cfg.py
← Index redb/extractors/decompiler/apk/smali_cfg.py python
"""Build a basic-block CFG from smali method bodies and compute graph metrics.

Handles both apktool smali (label-based branches like :cond_0) and
androguard fallback smali (offset-based branches like +005h).

Graph metrics match the Binary Ninja CFG pipeline for cross-platform
consistency: cyclomatic complexity (E - N + 2), loop count (back edges),
max BFS depth, max fan-out. Advanced features (topology hash, MD-index,
WL-MinHash, packed adjacency) reuse the generic cfg_features module.
"""

import logging
import re
from collections import deque
from dataclasses import dataclass, field
from typing import Dict, List, Optional, Tuple

from redb.extractors.decompiler.apk.smali_normalization import (
    categorize_opcode,
    CATEGORY_TO_ACFG_INDEX,
)
from redb.extractors.decompiler.bninja.analysis import cfg_features

logger = logging.getLogger(__name__)


# Instruction classification patterns
_IF_RE = re.compile(r"^if-\w+")
_GOTO_RE = re.compile(r"^goto(?:/\d+)?(?:\s|$)")
_RETURN_RE = re.compile(r"^return")
_THROW_RE = re.compile(r"^throw(?:\s|$)")
_SWITCH_RE = re.compile(r"^(?:packed|sparse)-switch\s")

# Label reference in apktool format: :cond_0, :goto_1, etc.
_LABEL_TARGET_RE = re.compile(r":[\w]+")

# Offset reference in androguard format: +005h, -003h
_OFFSET_TARGET_RE = re.compile(r"[+-]\w+h\b")

# Directives and labels
_SKIP_RE = re.compile(r"^\s*(?:\.|#|$)")
_LABEL_DEF_RE = re.compile(r"^\s*:([\w]+)")


@dataclass
class SmaliCFGMetrics:
    """CFG-derived metrics for a smali method."""
    block_count: int = 0
    edge_count: int = 0
    cyclomatic_complexity: int = 1
    loop_count: int = 0
    max_depth: int = 0
    max_fan_out: int = 0
    # Obfuscation scores (parity with code_binja_decompiled_functions_content)
    flattened_score: float = 0.0
    mba_score: float = 0.0
    # Per-block ACFG feature vectors (Gemini-style, same format as BNinja).
    # Each entry: [instr_count, arithmetic, logic, transfer, call,
    #              comparison, memory, successor_count]
    # Empty list if block features were not computed.
    block_features: List[List[int]] = field(default_factory=list)
    # Advanced CFG features (Phase 5 — parity with code_binja_cfg_functions)
    cfg_topology_hash: bytes = field(default_factory=lambda: b'\x00' * 16)
    md_index_topdown: int = 0
    md_index_bottomup: int = 0
    cfg_feature_tlsh: Optional[str] = None
    wl_minhash: List[int] = field(default_factory=lambda: [255] * 128)
    cfg_adjacency: List[int] = field(default_factory=list)


def compute_cfg_metrics(smali_body: str) -> SmaliCFGMetrics:
    """Compute CFG metrics from a smali method body.

    Works with both apktool label-based smali and androguard offset-based
    smali. Falls back to instruction-counting heuristic if CFG construction
    fails.
    """
    if not smali_body or not smali_body.strip():
        return SmaliCFGMetrics()

    lines = smali_body.split("\n")

    # Determine format: apktool (has labels) vs androguard (no labels)
    has_labels = any(_LABEL_DEF_RE.match(line) for line in lines)

    if has_labels:
        return _build_cfg_with_labels(lines)
    else:
        return _build_cfg_from_instructions(lines)


def _parse_instructions(lines: List[str]) -> List[Tuple[int, str]]:
    """Extract instruction lines, skipping directives, labels, blanks, comments.

    Returns list of (original_line_index, stripped_instruction).
    """
    instructions = []
    for i, line in enumerate(lines):
        stripped = line.strip()
        if not stripped or stripped.startswith(".") or stripped.startswith("#"):
            continue
        if stripped.startswith(":"):
            continue
        instructions.append((i, stripped))
    return instructions


def _build_cfg_with_labels(lines: List[str]) -> SmaliCFGMetrics:
    """Build CFG using apktool label-based format.

    Labels (e.g., :cond_0, :goto_1) define branch targets.
    Branch instructions reference labels directly.
    """
    # First pass: collect label positions and instructions
    # We track everything by instruction index (position in instruction list)
    labels: Dict[str, int] = {}  # label_name -> instruction_index
    instructions: List[str] = []
    # Map: line_index -> instruction_index (for label resolution)
    line_to_instr: Dict[int, int] = {}

    instr_idx = 0
    for i, line in enumerate(lines):
        stripped = line.strip()
        if not stripped or stripped.startswith(".") or stripped.startswith("#"):
            continue
        m = _LABEL_DEF_RE.match(stripped)
        if m:
            label_name = ":" + m.group(1)
            labels[label_name] = instr_idx  # next instruction after this label
            continue
        line_to_instr[i] = instr_idx
        instructions.append(stripped)
        instr_idx += 1

    n_instr = len(instructions)
    if n_instr == 0:
        return SmaliCFGMetrics()

    # Identify basic block start points
    block_starts = {0}

    for idx, instr in enumerate(instructions):
        next_idx = idx + 1

        if _IF_RE.match(instr):
            # Conditional branch: fall-through + branch target
            if next_idx < n_instr:
                block_starts.add(next_idx)
            target_label = _extract_label_target(instr)
            if target_label and target_label in labels:
                block_starts.add(labels[target_label])

        elif _GOTO_RE.match(instr):
            # Unconditional jump
            if next_idx < n_instr:
                block_starts.add(next_idx)
            target_label = _extract_label_target(instr)
            if target_label and target_label in labels:
                block_starts.add(labels[target_label])

        elif _RETURN_RE.match(instr) or _THROW_RE.match(instr):
            if next_idx < n_instr:
                block_starts.add(next_idx)

        elif _SWITCH_RE.match(instr):
            if next_idx < n_instr:
                block_starts.add(next_idx)

    # Also add all label targets as block starts
    for label, target_idx in labels.items():
        if target_idx < n_instr:
            block_starts.add(target_idx)

    # Build blocks: sorted list of start indices
    sorted_starts = sorted(block_starts)
    n_blocks = len(sorted_starts)

    # Map instruction index -> block index
    instr_to_block = {}
    for block_idx, start in enumerate(sorted_starts):
        end = sorted_starts[block_idx + 1] if block_idx + 1 < n_blocks else n_instr
        for i in range(start, end):
            instr_to_block[i] = block_idx

    # Collect per-block instruction lists for ACFG feature extraction
    block_instructions: List[List[str]] = []
    for block_idx in range(n_blocks):
        start = sorted_starts[block_idx]
        end = sorted_starts[block_idx + 1] if block_idx + 1 < n_blocks else n_instr
        block_instructions.append(instructions[start:end])

    # Build adjacency lists
    successors: List[List[int]] = [[] for _ in range(n_blocks)]

    for block_idx in range(n_blocks):
        start = sorted_starts[block_idx]
        end = sorted_starts[block_idx + 1] if block_idx + 1 < n_blocks else n_instr
        last_instr_idx = end - 1
        last_instr = instructions[last_instr_idx]

        if _IF_RE.match(last_instr):
            # Fall-through
            if block_idx + 1 < n_blocks:
                _add_edge(successors, block_idx, block_idx + 1)
            # Branch target
            target_label = _extract_label_target(last_instr)
            if target_label and target_label in labels:
                target_block = instr_to_block.get(labels[target_label])
                if target_block is not None:
                    _add_edge(successors, block_idx, target_block)

        elif _GOTO_RE.match(last_instr):
            # Only branch target, no fall-through
            target_label = _extract_label_target(last_instr)
            if target_label and target_label in labels:
                target_block = instr_to_block.get(labels[target_label])
                if target_block is not None:
                    _add_edge(successors, block_idx, target_block)

        elif _RETURN_RE.match(last_instr) or _THROW_RE.match(last_instr):
            # No successors
            pass

        elif _SWITCH_RE.match(last_instr):
            # Fall-through (default case)
            if block_idx + 1 < n_blocks:
                _add_edge(successors, block_idx, block_idx + 1)
            # Switch targets are defined in switch payload (.packed-switch/.sparse-switch)
            # which we can't easily parse from the body alone. The targets are labels
            # referenced in the switch data section. We handle them via label targets.
            _add_switch_targets(
                lines, last_instr, labels, instr_to_block,
                successors, block_idx
            )

        else:
            # Normal instruction at end of block — fall through
            if block_idx + 1 < n_blocks:
                _add_edge(successors, block_idx, block_idx + 1)

    return _compute_metrics_from_cfg(successors, n_blocks, block_instructions)


def _build_cfg_from_instructions(lines: List[str]) -> SmaliCFGMetrics:
    """Build CFG from androguard offset-based format.

    Without labels, we use instruction counting to build a basic CFG.
    Branch targets are hex offsets (e.g., +005h) which we resolve by
    tracking instruction positions.
    """
    instructions = _parse_instructions(lines)
    n_instr = len(instructions)
    if n_instr == 0:
        return SmaliCFGMetrics()

    # Identify basic block starts
    block_starts = {0}

    for idx, (_, instr) in enumerate(instructions):
        next_idx = idx + 1

        if _IF_RE.match(instr):
            if next_idx < n_instr:
                block_starts.add(next_idx)
            # Try to resolve offset target to instruction index
            target = _resolve_offset_target(instr, idx, n_instr)
            if target is not None:
                block_starts.add(target)

        elif _GOTO_RE.match(instr):
            if next_idx < n_instr:
                block_starts.add(next_idx)
            target = _resolve_offset_target(instr, idx, n_instr)
            if target is not None:
                block_starts.add(target)

        elif _RETURN_RE.match(instr) or _THROW_RE.match(instr):
            if next_idx < n_instr:
                block_starts.add(next_idx)

    sorted_starts = sorted(block_starts)
    n_blocks = len(sorted_starts)

    # Map instruction index -> block index
    instr_to_block = {}
    for block_idx, start in enumerate(sorted_starts):
        end = sorted_starts[block_idx + 1] if block_idx + 1 < n_blocks else n_instr
        for i in range(start, end):
            instr_to_block[i] = block_idx

    # Collect per-block instruction lists for ACFG features
    block_instructions: List[List[str]] = []
    for block_idx in range(n_blocks):
        start = sorted_starts[block_idx]
        end = sorted_starts[block_idx + 1] if block_idx + 1 < n_blocks else n_instr
        block_instructions.append(
            [instructions[i][1] for i in range(start, end)]
        )

    # Build adjacency
    successors: List[List[int]] = [[] for _ in range(n_blocks)]

    for block_idx in range(n_blocks):
        start = sorted_starts[block_idx]
        end = sorted_starts[block_idx + 1] if block_idx + 1 < n_blocks else n_instr
        last_idx = end - 1
        _, last_instr = instructions[last_idx]

        if _IF_RE.match(last_instr):
            if block_idx + 1 < n_blocks:
                _add_edge(successors, block_idx, block_idx + 1)
            target = _resolve_offset_target(last_instr, last_idx, n_instr)
            if target is not None:
                target_block = instr_to_block.get(target)
                if target_block is not None:
                    _add_edge(successors, block_idx, target_block)

        elif _GOTO_RE.match(last_instr):
            target = _resolve_offset_target(last_instr, last_idx, n_instr)
            if target is not None:
                target_block = instr_to_block.get(target)
                if target_block is not None:
                    _add_edge(successors, block_idx, target_block)

        elif _RETURN_RE.match(last_instr) or _THROW_RE.match(last_instr):
            pass

        else:
            if block_idx + 1 < n_blocks:
                _add_edge(successors, block_idx, block_idx + 1)

    return _compute_metrics_from_cfg(successors, n_blocks, block_instructions)


def _resolve_offset_target(instr: str, current_idx: int, n_instr: int) -> Optional[int]:
    """Resolve androguard hex offset to an instruction index.

    Androguard offsets (e.g., +005h, -003h) are in 16-bit code units relative
    to the branch instruction. Since most Dalvik instructions are 1-3 code
    units, we approximate: each instruction ≈ 1 code unit for offset
    resolution. This gives an approximate but usable CFG.

    For better accuracy, we treat the offset as an instruction count
    (which is correct for 1-unit instructions and approximate for larger ones).
    """
    m = _OFFSET_TARGET_RE.search(instr)
    if not m:
        return None

    offset_str = m.group(0)
    try:
        # Parse hex offset: +005h -> 5, -003h -> -3
        offset_val = int(offset_str.rstrip("h"), 16)
    except ValueError:
        return None

    target = current_idx + offset_val
    if 0 <= target < n_instr:
        return target
    return None


def _extract_label_target(instr: str) -> Optional[str]:
    """Extract the label target from a branch/goto instruction.

    E.g., 'if-eqz v0, :cond_0' -> ':cond_0'
          'goto :goto_1' -> ':goto_1'
    """
    m = _LABEL_TARGET_RE.search(instr)
    return m.group(0) if m else None


def _add_edge(successors: List[List[int]], src: int, dst: int):
    """Add edge if not duplicate."""
    if dst not in successors[src]:
        successors[src].append(dst)


def _add_switch_targets(
    lines: List[str],
    switch_instr: str,
    labels: Dict[str, int],
    instr_to_block: Dict[int, int],
    successors: List[List[int]],
    block_idx: int,
):
    """Try to resolve switch case targets.

    Switch payloads in apktool smali are defined as:
      .packed-switch 0x0
        :pswitch_0
        :pswitch_1
      .end packed-switch

    We scan the body for label references in switch payload sections.
    """
    # Find the switch payload target label
    target_label = _extract_label_target(switch_instr)
    if not target_label:
        return

    # Scan for packed-switch/sparse-switch payload sections
    in_switch = False
    for line in lines:
        stripped = line.strip()
        if stripped.startswith(".packed-switch") or stripped.startswith(".sparse-switch"):
            in_switch = True
            continue
        if stripped.startswith(".end packed-switch") or stripped.startswith(".end sparse-switch"):
            in_switch = False
            continue
        if in_switch:
            # Lines in switch payload are label references
            m = _LABEL_TARGET_RE.search(stripped)
            if m:
                case_label = m.group(0)
                if case_label in labels:
                    target_block = instr_to_block.get(labels[case_label])
                    if target_block is not None:
                        _add_edge(successors, block_idx, target_block)


def _build_block_features(
    block_instructions: List[List[str]],
    successors: List[List[int]],
    n: int,
) -> List[List[int]]:
    """Build Gemini-style ACFG feature vectors per block from smali instructions.

    Same 8-element format as Binary Ninja's build_block_features:
    [instr_count, arithmetic, logic, transfer, call, comparison, memory, successor_count]

    Uses semantic opcode categorization (analogous to LLIL operation categories)
    to map each Dalvik instruction to one of 7 category bins.
    """
    features = []
    for i in range(n):
        cats = [0, 0, 0, 0, 0, 0, 0]  # 7 categories
        instrs = block_instructions[i] if i < len(block_instructions) else []
        for instr in instrs:
            opcode = instr.split(None, 1)[0] if instr else ""
            category = categorize_opcode(opcode)
            acfg_idx = CATEGORY_TO_ACFG_INDEX.get(category, 6)
            cats[acfg_idx] += 1

        features.append([
            min(len(instrs), 65535),
            min(cats[0], 65535),  # arithmetic
            min(cats[1], 65535),  # logic
            min(cats[2], 65535),  # transfer
            min(cats[3], 65535),  # call
            min(cats[4], 65535),  # comparison
            min(cats[5], 65535),  # memory
            min(len(successors[i]), 65535),
        ])
    return features


def _compute_metrics_from_cfg(
    successors: List[List[int]],
    n: int,
    block_instructions: Optional[List[List[str]]] = None,
) -> SmaliCFGMetrics:
    """Compute all graph metrics from the adjacency list."""
    if n == 0:
        return SmaliCFGMetrics()

    edge_count = sum(len(s) for s in successors)

    # Cyclomatic complexity: E - N + 2
    cc = edge_count - n + 2
    if cc < 1:
        cc = 1

    # Loop count: back edges via iterative DFS
    loop_count = _count_back_edges(successors, n)

    # Max BFS depth from entry
    max_depth = _bfs_max_depth(successors, n)

    # Max fan-out
    max_fan_out = max(len(s) for s in successors) if successors else 0

    # Per-block ACFG features
    bb_features = []
    if block_instructions is not None:
        bb_features = _build_block_features(block_instructions, successors, n)

    # Obfuscation scores
    flattened = _compute_flattened_score(successors, n)
    mba = (
        _compute_mba_score(block_instructions, n)
        if block_instructions is not None
        else 0.0
    )

    # Advanced CFG features — reuse generic cfg_features module
    # Build predecessors from successors
    predecessors = [[] for _ in range(n)]
    for src, targets in enumerate(successors):
        for tgt in targets:
            predecessors[tgt].append(src)

    try:
        bfs = cfg_features.bfs_order(successors, n)
        topology_hash = cfg_features.compute_topology_hash(successors, bfs, n)
        md_topdown = cfg_features.compute_md_index_topdown(
            successors, predecessors, bfs
        )
        md_bottomup = cfg_features.compute_md_index_bottomup(
            successors, predecessors, n
        )
        cfg_tlsh = (
            cfg_features.compute_cfg_feature_tlsh(bb_features, bfs)
            if bb_features
            else None
        )
        wl_minhash = (
            cfg_features.compute_wl_minhash(
                successors, predecessors, bb_features, n
            )
            if bb_features
            else [255] * 128
        )
        adjacency = cfg_features.pack_adjacency(successors)
    except Exception as e:
        logger.debug("Advanced CFG features failed: %s", e)
        topology_hash = b'\x00' * 16
        md_topdown = 0
        md_bottomup = 0
        cfg_tlsh = None
        wl_minhash = [255] * 128
        adjacency = []

    return SmaliCFGMetrics(
        block_count=n,
        edge_count=edge_count,
        cyclomatic_complexity=cc,
        loop_count=loop_count,
        max_depth=max_depth,
        max_fan_out=max_fan_out,
        flattened_score=flattened,
        mba_score=mba,
        block_features=bb_features,
        cfg_topology_hash=topology_hash,
        md_index_topdown=md_topdown,
        md_index_bottomup=md_bottomup,
        cfg_feature_tlsh=cfg_tlsh,
        wl_minhash=wl_minhash,
        cfg_adjacency=adjacency,
    )


def _compute_dominators(successors: List[List[int]], n: int) -> List[int]:
    """Compute immediate dominators using iterative dataflow algorithm.

    Returns idom[i] = immediate dominator of block i.  idom[0] = -1 (entry).
    """
    if n == 0:
        return []

    # Build predecessors
    preds: List[List[int]] = [[] for _ in range(n)]
    for src, targets in enumerate(successors):
        for tgt in targets:
            preds[tgt].append(src)

    # Initialize: dom[0] = {0}, dom[i] = all blocks
    all_blocks = set(range(n))
    dom = [all_blocks.copy() for _ in range(n)]
    dom[0] = {0}

    changed = True
    while changed:
        changed = False
        for i in range(1, n):
            if not preds[i]:
                new_dom = {i}
            else:
                new_dom = all_blocks.copy()
                for p in preds[i]:
                    new_dom &= dom[p]
                new_dom.add(i)
            if new_dom != dom[i]:
                dom[i] = new_dom
                changed = True

    # Extract immediate dominators from dominator sets
    idom = [-1] * n
    for i in range(1, n):
        # idom[i] = the dominator of i (other than i itself) that is
        # dominated by all other dominators of i
        doms_of_i = dom[i] - {i}
        if not doms_of_i:
            continue
        for candidate in doms_of_i:
            # candidate is idom if it is dominated by all other dominators
            if all(candidate in dom[other] for other in doms_of_i):
                # candidate dominates no other dominator besides itself
                # (i.e., it's the closest dominator)
                if all(
                    other == candidate or candidate not in dom[other]
                    for other in doms_of_i
                ):
                    pass  # not the closest
                else:
                    continue
            else:
                continue
        # Simpler approach: idom is the element in doms_of_i with the
        # largest dominator set (closest to i in the dominator tree)
        idom[i] = max(doms_of_i, key=lambda d: len(dom[d]))

    return idom


def _compute_flattened_score(
    successors: List[List[int]], n: int
) -> float:
    """Detect control flow flattening — same heuristic as Binary Ninja's
    ObfuscationScores.flattened_score (Tim Blazytko).

    Walks over all basic blocks, finds those with back edges (loop headers),
    and computes the ratio of blocks dominated by them to total blocks.
    """
    if n <= 1:
        return 0.0

    idom = _compute_dominators(successors, n)

    # Build dominator tree children from idom
    dom_children: List[List[int]] = [[] for _ in range(n)]
    for i in range(1, n):
        if idom[i] >= 0:
            dom_children[idom[i]].append(i)

    max_ratio = 0.0

    for block in range(n):
        # Get all blocks dominated by this block (reachable in dominator tree)
        dominated = set()
        worklist = [block]
        while worklist:
            b = worklist.pop()
            dominated.add(b)
            worklist.extend(dom_children[b])

        # Check for a back edge: any predecessor of block is in dominated set
        has_back_edge = False
        for src, targets in enumerate(successors):
            if block in targets and src in dominated:
                has_back_edge = True
                break

        if not has_back_edge:
            continue

        ratio = len(dominated) / n
        if ratio > max_ratio:
            max_ratio = ratio

    return max_ratio


def _compute_mba_score(block_instructions: List[List[str]], n: int) -> float:
    """Compute mixed boolean-arithmetic score for a smali method.

    Same concept as Binary Ninja's ObfuscationScores.MBA_score: ratio of
    instructions that mix arithmetic and logic operations.

    At the smali level, we check each instruction's opcode:
    - Arithmetic: add, sub, mul, div, rem, neg
    - Logic: and, or, xor, shl, shr, ushr, not

    Since Dalvik instructions are single operations (unlike x86 complex
    instructions or HLIL expression trees), we check per-instruction whether
    the method mixes both categories. The score is the fraction of
    instructions belonging to the minority category when both are present.
    """
    ARITHMETIC_OPS = {"add", "sub", "mul", "div", "rem", "neg"}
    LOGIC_OPS = {"and", "or", "xor", "shl", "shr", "ushr", "not"}

    arithmetic_count = 0
    logic_count = 0
    total_instructions = 0

    for block in block_instructions[:n]:
        for instr in block:
            opcode = instr.split(None, 1)[0] if instr else ""
            # Strip type suffix: add-int/2addr -> add
            base = opcode.split("-")[0] if "-" in opcode else opcode
            total_instructions += 1
            if base in ARITHMETIC_OPS:
                arithmetic_count += 1
            elif base in LOGIC_OPS:
                logic_count += 1

    if total_instructions == 0:
        return 0.0

    # MBA is present when both arithmetic and logic operations co-exist.
    # Score = min(arith, logic) / total — measures how much mixing occurs.
    if arithmetic_count == 0 or logic_count == 0:
        return 0.0

    return min(arithmetic_count, logic_count) / total_instructions


def _count_back_edges(successors: List[List[int]], n: int) -> int:
    """Count natural loops via iterative DFS back-edge detection.

    Same algorithm as bninja/analysis/cfg_features.py:count_back_edges.
    """
    if n == 0:
        return 0

    WHITE, GRAY, BLACK = 0, 1, 2
    color = [WHITE] * n
    back_edges = 0

    stack = [(0, iter(successors[0]))]
    color[0] = GRAY

    while stack:
        u, children = stack[-1]
        try:
            v = next(children)
            if color[v] == GRAY:
                back_edges += 1
            elif color[v] == WHITE:
                color[v] = GRAY
                stack.append((v, iter(successors[v])))
        except StopIteration:
            color[u] = BLACK
            stack.pop()

    return back_edges


def _bfs_max_depth(successors: List[List[int]], n: int) -> int:
    """Maximum BFS depth from entry block.

    Same algorithm as bninja/analysis/cfg_features.py:bfs_max_depth.
    """
    if n == 0:
        return 0

    depth = {0: 0}
    max_d = 0
    queue = deque([0])

    while queue:
        node = queue.popleft()
        for s in successors[node]:
            if s not in depth:
                depth[s] = depth[node] + 1
                if depth[s] > max_d:
                    max_d = depth[s]
                queue.append(s)

    return max_d