Xiaochao Qu

48 papers A* 7B 1C 1Journal 34Unranked 5
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Minghao Liu, Le Zhang, Yingjie Tian, Xiaochao Qu, Luoqi Liu, Ting Liu
2026 J jnl
CoRR
Zijie Lou, Xiangwei Feng, Jiaxin Wang, Jiangtao Yao, Fei Che, Tianbao Liu, Chengjing Wu, Xiaochao Qu, Luoqi Liu, Ting Liu
2025 J jnl
CoRR
Yiheng Lin, Shifang Zhao, Ting Liu, Xiaochao Qu, Luoqi Liu, Yao Zhao, Yunchao Wei
2025 J jnl
CoRR
Yihan Hu, Jianing Peng, Yiheng Lin, Ting Liu, Xiaochao Qu, Luoqi Liu, Yao Zhao, Yunchao Wei
2025 A* conf
CVPR
Jiahe Li, Feiyu Wang, Xiaochao Qu, Chengjing Wu, Luoqi Liu, Ting Liu
2025 J jnl
CoRR
Jiahe Li, Feiyu Wang, Xiaochao Qu, Chengjing Wu, Luoqi Liu, Ting Liu
2025 A* conf
CVPR
Tong Wang, Ting Liu, Xiaochao Qu, Chengjing Wu, Luoqi Liu, Xiaolin Hu
2025 J jnl
CoRR
Tong Wang, Ting Liu, Xiaochao Qu, Chengjing Wu, Luoqi Liu, Xiaolin Hu
2025 A* conf
CVPR
Jun Huang, Ting Liu, Yihang Wu, Xiaochao Qu, Luoqi Liu, Xiaolin Hu
2025 J jnl
CoRR
Jun Huang, Ting Liu, Yihang Wu, Xiaochao Qu, Luoqi Liu, Xiaolin Hu
2025 A* conf
AAAI
Yiheng Lin, Yihan Hu, Chenyi Zhang, Ting Liu, Xiaochao Qu, Luoqi Liu, Yao Zhao, Yunchao Wei
2025 A* conf
CVPR
Chenyi Zhang, Ting Liu, Xiaochao Qu, Luoqi Liu, Yao Zhao, Yunchao Wei
2025 J jnl
CoRR
Zixiang Li, Yue Song, Jianing Peng, Ting Liu, Jun Huang, Xiaochao Qu, Luoqi Liu, Wei Wang, Yao Zhao, Yunchao Wei
2025 A* conf
CVPR
Chongkai Yu, Ting Liu, Anqi Li, Xiaochao Qu, Chengjing Wu, Luoqi Liu, Xiaolin Hu
2024 J jnl
CoRR
Minghao Liu, Le Zhang, Yingjie Tian, Xiaochao Qu, Luoqi Liu, Ting Liu
2024 J jnl
CoRR
Yiheng Lin, Yihan Hu, Chenyi Zhang, Ting Liu, Xiaochao Qu, Luoqi Liu, Yao Zhao, Yunchao Wei
2024 J jnl
CoRR
Chen Liang, Qiang Guo, Xiaochao Qu, Luoqi Liu, Ting Liu
2024 J jnl
CoRR
Chongkai Yu, Anqi Li, Xiaochao Qu, Luoqi Liu, Ting Liu
2024 J jnl
CoRR
Tong Wang, Xiaochao Qu, Ting Liu
2022 A* conf
CVPR
Zitian Wang, Xuecheng Nie, Xiaochao Qu, Yunpeng Chen, Si Liu
2022 J jnl
CoRR
Zitian Wang, Xuecheng Nie, Xiaochao Qu, Yunpeng Chen, Si Liu
2021 J jnl
CoRR
Ren Yang, Radu Timofte, Jing Liu, Yi Xu, Xinjian Zhang, Minyi Zhao, Shuigeng Zhou, Kelvin C. K. Chan, Shangchen Zhou, Xiangyu Xu, Chen Change Loy, Xin Li, Fanglong Liu, He Zheng, Lielin Jiang, Qi Zhang, Dongliang He, Fu Li, Qingqing Dang, Yibin Huang, Matteo Maggioni, Zhongqian Fu, Shuai Xiao, Cheng Li, Thomas Tanay, Fenglong Song, Wentao Chao, Qiang Guo, Yan Liu, Jiang Li, Xiaochao Qu, Dewang Hou, Jiayu Yang, Lyn Jiang, Di You, Zhenyu Zhang, Chong Mou, Iaroslav Koshelev, Pavel Ostyakov, Andrey Somov, Jia Hao, Xueyi Zou, Shijie Zhao, Xiaopeng Sun, Yiting Liao, Yuanzhi Zhang, Qing Wang, Gen Zhan, Mengxi Guo, Junlin Li, Ming Lu, Zhan Ma, Pablo Navarrete Michelini, Hai Wang, Yiyun Chen, Jingyu Guo, Liliang Zhang, Wenming Yang, Sijung Kim, Syehoon Oh, Yucong Wang, Minjie Cai, Wei Hao, Kangdi Shi, Liangyan Li, Jun Chen, Wei Gao, Wang Liu, Xiaoyu Zhang, Linjie Zhou, Sixin Lin, Ru Wang
2020 J jnl
IEEE Trans. Image Process.
Wenhan Yang, Ye Yuan, Wenqi Ren, Jiaying Liu, Walter J. Scheirer, Zhangyang Wang, Taiheng Zhang, Qiaoyong Zhong, Di Xie, Shiliang Pu, Yuqiang Zheng, Yanyun Qu, Yuhong Xie, Liang Chen, Zhonghao Li, Chen Hong, Hao Jiang, Siyuan Yang, Yan Liu, Xiaochao Qu, Pengfei Wan, Shuai Zheng, Minhui Zhong, Taiyi Su, Lingzhi He, Yandong Guo, Yao Zhao, Zhenfeng Zhu, Jinxiu Liang, Jingwen Wang, Tianyi Chen, Yuhui Quan, Yong Xu, Bo Liu, Xin Liu, Qi Sun, Tingyu Lin, Xiaochuan Li, Feng Lu, Lin Gu, Shengdi Zhou, Cong Cao, Shifeng Zhang, Cheng Chi, Chubin Zhuang, Zhen Lei, Stan Z. Li, Shizheng Wang, Ruizhe Liu, Dong Yi, Zheming Zuo, Jianning Chi, Huan Wang, Kai Wang, Yixiu Liu, Xingyu Gao, Zhenyu Chen, Chang Guo, Yongzhou Li, Huicai Zhong, Jing Huang, Heng Guo, Jianfei Yang, Wenjuan Liao, Jiangang Yang, Liguo Zhou, Mingyue Feng, Likun Qin
2019 J jnl
CoRR
Yiming He, Wei Hu, Siyuan Yang, Xiaochao Qu, Pengfei Wan, Zongming Guo
2019 conf
CVPR Workshops
Andrey Ignatov, Radu Timofte, Xiaochao Qu, Xingguang Zhou, Ting Liu, Pengfei Wan, Syed Waqas Zamir, Aditya Arora, Salman H. Khan, Fahad Shahbaz Khan, Ling Shao, Dongwon Park, Se Young Chun, Pablo Navarrete Michelini, Hanwen Liu, Dan Zhu, Zhiwei Zhong, Xianming Liu, Junjun Jiang, Debin Zhao, Muhammad Haris, Kazutoshi Akita, Tomoki Yoshida, Greg Shakhnarovich, Norimichi Ukita, Jie Liu, Cheolkon Jung, Raimondo Schettini, Simone Bianco, Claudio Cusano, Flavio Piccoli, Pengju Liu, Kai Zhang, Jingdong Liu, Jiye Liu, Hongzhi Zhang, Wangmeng Zuo, Nelson Chong Ngee Bow, Lai-Kuan Wong, John See, Jinghui Qin, Lishan Huang, Yukai Shi, Pengxu Wei, Wushao Wen, Liang Lin, Zheng Hui, Xiumei Wang, Xinbo Gao, Kanti Kumari, Vikas Kumar Anand, Mahendra Khened, Ganapathy Krishnamurthi
2019 conf
CVPR Workshops
Codruta O. Ancuti, Cosmin Ancuti, Radu Timofte, Luc Van Gool, Lei Zhang, Ming-Hsuan Yang, Tiantong Guo, Xuelu Li, Venkateswararao Cherukuri, Vishal Monga, Hao Jiang, Siyuan Yang, Yan Liu, Xiaochao Qu, Pengfei Wan, Dongwon Park, Se Young Chun, Ming Hong, Jinying Huang, Yizi Chen, Shuxin Chen, Bomin Wang, Pablo Navarrete Michelini, Hanwen Liu, Dan Zhu, Jing Liu, Sanchayan Santra, Ranjan Mondal, Bhabatosh Chanda, Peter Morales, Tzofi Klinghoffer, Le Manh Quan, Yong-Guk Kim, Xiao Liang, Runde Li, Jinshan Pan, Jinhui Tang, Kuldeep Purohit, Maitreya Suin, A. N. Rajagopalan, Raimondo Schettini, Simone Bianco, Flavio Piccoli, Claudio Cusano, Luigi Celona, Sunhee Hwang, Yu Seung Ma, Hyeran Byun, Subrahmanyam Murala, Akshay Dudhane, Harshjeet Singh Aulakh, Tianxiang Zheng, Tao Zhang, Weining Qin, Runnan Zhou, Shanhu Wang, Jean-Philippe Tarel, Chuansheng Wang, Jiawei Wu
2019 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Suah Kim, Rolf Lussi, Xiaochao Qu, Fangjun Huang, Hyoung Joong Kim
2019 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Suah Kim, Xiaochao Qu, Vasily Sachnev, Hyoung Joong Kim
2016 J jnl
Medical Biol. Eng. Comput.
Xiaochao Qu, Xueyuan Gao, Xianhui Xu, Shouping Zhu, Jimin Liang
2016 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Fangjun Huang, Xiaochao Qu, Hyoung Joong Kim, Jiwu Huang
2015 conf
WIFS
Suah Kim, Rolf Lussi, Xiaochao Qu, Hyoung Joong Kim
2015 J jnl
CoRR
Xiaochao Qu, Suah Kim, Run Cui, Hyoung Joong Kim
2015 J jnl
J. Vis. Commun. Image Represent.
Xiaochao Qu, Suah Kim, Run Cui, Hyoung Joong Kim
2015 J jnl
Comput. Vis. Media
Fangjun Huang, Xiaochao Qu, Hyoung Joong Kim, Jiwu Huang
2015 J jnl
CoRR
Xiaochao Qu, Suah Kim, Run Cui, Hyoung Joong Kim
2015 J jnl
Signal Process.
Xiaochao Qu, Hyoung Joong Kim
2015 B conf
ICIP
Xiaochao Qu, Suah Kim, Dessalegn Atnafu, Hyoung Joong Kim
2014 conf
ISSNIP
Xiaochao Qu, Hyoung Joong Kim
2014 C conf
IWDW
Xiaochao Qu, Suah Kim, Run Cui, Fangjun Huang, Hyoung Joong Kim
2013 conf
APSIPA
Sang-ug Kang, Xiaochao Qu, Hyoung Joong Kim
2012 J jnl
Int. J. Autom. Comput.
Xue-Li Chen, Heng Zhao, Xiaochao Qu, Duofang Chen, Xiao-Rui Wang, Jimin Liang
2012 J jnl
IEEE Trans. Medical Imaging
Shouping Zhu, Di Dong, Udo Birk, Matthias Rieckher, Nektarios Tavernarakis, Xiaochao Qu, Jimin Liang, Jie Tian, Jorge Ripoll
2012 J jnl
Int. J. Autom. Comput.
Yanbin Hou, Heng Zhao, Xiaochao Qu, Duofang Chen, Xiao-Rui Wang, Jimin Liang
2010 J jnl
J. Comput. Phys.
Heyu Huang, Xiaochao Qu, Jimin Liang, Xiaowei He, Xueli Chen, Da'an Yang, Jie Tian
2010 J jnl
IEEE Trans. Biomed. Eng.
Junting Liu, Duofang Chen, Xiangsi Li, Xiaopeng Ma, Haichao Chen, Weiwei Fan, Fu Wang, Xiaochao Qu, Jimin Liang, Feng Cao, Jie Tian
2010 J jnl
Int. J. Biomed. Imaging
Xueli Chen, Xinbo Gao, Xiaochao Qu, Duofang Chen, Bin Ma, Lin Wang, Kuan Peng, Jimin Liang, Jie Tian
2010 J jnl
Int. J. Biomed. Imaging
Kuan Peng, Xinbo Gao, Jimin Liang, Xiaochao Qu, Nunu Ren, Xueli Chen, Bin Ma, Jie Tian
2010 J jnl
Int. J. Biomed. Imaging
Xiaowei He, Jimin Liang, Xiaochao Qu, Heyu Huang, Yanbin Hou, Jie Tian
tests/integration/test_pe_extractor.py
← Index tests/integration/test_pe_extractor.py python
"""
Integration tests for the PEExtractor base class.
"""
import pytest
from unittest.mock import Mock, patch, MagicMock

pytestmark = [pytest.mark.integration, pytest.mark.pe]


class TestPEExtractorInitialization:
    """Tests for PEExtractor initialization."""

    def test_pe_extractor_with_valid_pe(self, pe_binary_path, mock_logger):
        """Test PEExtractor initialization with valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            assert extractor.pe is not None
            assert extractor.filepath == pe_binary_path

    def test_pe_extractor_with_provided_pe_object(self, pe_binary_path, mock_logger, pe_object):
        """Test PEExtractor initialization with pre-existing PE object."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger, pe=pe_object)

            # Should use the provided PE object, not create a new one
            assert extractor.pe is pe_object

    def test_pe_extractor_with_invalid_file(self, elf_binary_path, mock_logger):
        """Test PEExtractor initialization with non-PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(elf_binary_path, mock_logger)

            # Should return None for pe when file is not a valid PE
            assert extractor.pe is None
            # Logger should have recorded an error
            assert mock_logger.error.called


class TestPEExtractorMethods:
    """Tests for PEExtractor helper methods."""

    def test_check_dotnet_true(self, pe_binary_path, mock_logger):
        """Test _check_dotnet returns True for .NET PE."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            # The test PE file is a .NET binary
            if extractor.pe is not None:
                result = extractor._check_dotnet()
                # d8637bdbcfc9112fcb1f0167b398e771 is a .NET binary
                assert result is True

    def test_check_dotnet_false(self, elf_binary_path, mock_logger):
        """Test _check_dotnet returns False for non-PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(elf_binary_path, mock_logger)

            # Should return False when PE is None
            result = extractor._check_dotnet()
            assert result is False

    def test_is_signed_false(self, pe_binary_path, mock_logger):
        """Test _is_signed method."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                result = extractor._is_signed()
                # Result depends on the actual binary
                assert isinstance(result, bool)

    def test_has_overlay(self, pe_binary_path, mock_logger):
        """Test _has_overlay method."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                result = extractor._has_overlay()
                assert isinstance(result, bool)


class TestGeneratePEFileObject:
    """Tests for _generate_pefile_object method."""

    def test_generate_pefile_object_valid(self, pe_binary_path, mock_logger):
        """Test _generate_pefile_object with valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            # The PE object should be created successfully
            assert extractor.pe is not None

    def test_generate_pefile_object_invalid(self, temp_text_file, mock_logger):
        """Test _generate_pefile_object with invalid file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(temp_text_file, mock_logger)

            # Should return None for invalid PE
            assert extractor.pe is None


class TestGenerateDotNetFileObject:
    """Tests for _generate_dotnetfile_object method."""

    def test_generate_dotnetfile_object_valid(self, pe_binary_path, mock_logger):
        """Test _generate_dotnetfile_object with .NET PE file."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEDotNetExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None and extractor._check_dotnet():
                dotnet, error = extractor._generate_dotnetfile_object()
                # Should create dotnet object for .NET PE
                assert dotnet is not None
                assert error is None

    def test_generate_dotnetfile_object_invalid(self, elf_binary_path, mock_logger):
        """Test _generate_dotnetfile_object with non-.NET file."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEDotNetExtractor(elf_binary_path, mock_logger)

            dotnet, error = extractor._generate_dotnetfile_object()
            # Should return error for non-.NET file
            assert dotnet is None
            assert error is not None


class TestPEExtractorTag:
    """Tests for tag method in PE extractors."""

    def test_pe_features_tag(self, pe_binary_path, mock_logger):
        """Test that PEFeaturesExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_FEATURES.value

    def test_pe_import_tag(self, pe_binary_path, mock_logger):
        """Test that PEImportExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_IMPORT.value

    def test_pe_section_tag(self, pe_binary_path, mock_logger):
        """Test that PESectionExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_SECTION.value


class TestPEExtractorClickHouseTable:
    """Tests for get_clickhouse_table method in PE extractors."""

    def test_pe_features_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PEFeaturesExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_features"

    def test_pe_import_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PEImportExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_imports"

    def test_pe_section_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PESectionExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_sections"


class TestPEExtractorPrepareExportData:
    """Tests for prepare_export_data method in PE extractors."""

    def test_pe_features_prepare_export_elasticsearch(self, pe_binary_path, mock_logger):
        """Test prepare_export_data for Elasticsearch."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                # First extract
                extractor.extract()
                result = extractor.prepare_export_data("ElasticsearchExporter")
                # Should return the pe_features dataclass
                assert result is extractor.pe_features

    def test_pe_features_prepare_export_clickhouse(self, pe_binary_path, mock_logger):
        """Test prepare_export_data for ClickHouse."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                # First extract
                extractor.extract()
                result = extractor.prepare_export_data("ClickHouseExporter")

                # Should return tuple of (data, column_names, column_type_names)
                assert isinstance(result, tuple)
                assert len(result) == 3
                data, column_names, column_type_names = result
                assert isinstance(data, list)
                assert isinstance(column_names, list)
                assert isinstance(column_type_names, list)
                # Column names and types should match in length
                assert len(column_names) == len(column_type_names)