SRM隐写分析器实现

SRM隐写分析器下载

        如果你只需运行SRM隐写分析器,不需要去官网下载,可以下载我上创的文件即可(如果这里下载需要付费,可以私信我)

        如果需要matlb版本或者linux版本的可以去官方下载:

         代码下载地址http://dde.binghamton.edu/download/feature_extractors/

        

 代码运行解释

        1、特征提取

                在python环境下运行feature.py文件,对图像特征提取,会将提取的图像特征存放到文件夹中(注意修改文件路径)。

                注意:对于可执行文件SRM.exe:-I是传入多张照片,-i是每次只能传入一张照片。对于SRM隐写分析,一般使用-I 一次传入多张照片。

def SRM(pic_dir, savepath):
    #-I是传入多张照片,-i是每次只能传入一张照片
    os.system(r'C:\Users\chengxin\Desktop\code\SRM\SRM.exe -I ' + pic_dir + ' -O ' + savepath)

                特征融合:会把提取的特征保存到一个.csv类型文件下。train_path, test_path:为上一步体征提取的文件位置。

def combine_features(train_path, test_path,types):
    all_train = pd.DataFrame()
    all_test = pd.DataFrame()
    for file in os.listdir(train_path):
        print(file)
        fea_train = pd.read_csv(train_path + file, header=None, delimiter=' ')
        fea_train = fea_train.iloc[:, :-1]  # 去掉最后一列
        all_train = pd.concat([all_train, fea_train], axis=1)

    all_train.to_csv(r'C:\Users\chengxin\Desktop\code\SRM\wow_'+types+'_train.csv', index=False)

    for file in os.listdir(test_path):
        fea_test = pd.read_csv(test_path + file, header=None, delimiter=' ')
        fea_test = fea_test.iloc[:, :-1]  # 去掉最后一列
        all_test = pd.concat([all_test, fea_test], axis=1)

    all_test.to_csv(r'C:\Users\chengxin\Desktop\code\SRM\wow_'+types+'_test.csv', index=False)

        2、matlb调用ensamble_training.mensamble_test.m两个文件

                通过matlb脚本将上一步提取出的载体和含密图像特征分别输入ensamble_training.m,进行训练,并训练好的模型和提取的SRM特征输入ensamble_test.m,给出分类结果result。

此代码需要在matlb下运行:
disp("1")
cover_test = importdata('wow_cover_test.csv');
cover_test = single(cover_test);
cover_test = cover_test(2:end,:);

disp("2")
cover_train = importdata('wow_cover_train.csv');
cover_train = single(cover_train);
cover_train = cover_train(2:end,:);

disp("3")
stego_test = importdata('wow_stego_test.csv');
stego_test = single(stego_test);
stego_test = stego_test(2:end,:);

disp("4")
stego_train = importdata('wow_stego_train.csv');
stego_train = single(stego_train);
stego_train = stego_train(2:end,:);

RandStream.setGlobalStream(RandStream('mt19937ar','Seed',1));

[trained_ensemble,results] = ensemble_training(cover_train,stego_train);

test_results_cover = ensemble_testing(cover_test,trained_ensemble);
test_results_stego = ensemble_testing(stego_test,trained_ensemble);

% Predictions: -1 stands for cover, +1 for stego
%false_alarms表示在cover样本中被错误分类为stego的数量
false_alarms = sum(test_results_cover.predictions ~= -1);
%issed_detections表示在stego样本中被错误分类为cover的数量。
missed_detections = sum(test_results_stego.predictions ~= +1);

num_cover_samples = size(cover_test, 1);
num_stego_samples = size(stego_test, 1);
num_testing_samples = num_cover_samples + num_stego_samples;

FA = false_alarms / num_cover_samples;
FD = missed_detections / num_stego_samples;

fprintf('False Alarms (FA): %.4f\n', FA);
fprintf('Missed Detections (FD): %.4f\n', FD);

testing_error = (false_alarms + missed_detections) / num_testing_samples;
fprintf('Testing error: %.4f\n', testing_error);

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值