Matlab 批量图像处理 - SSR 算法增强水下目标识别

本文提供使用 Matlab 代码对水下图像进行批量处理,使用 SSR 算法增强图像对比度,提升水下目标识别效果的代码示例。

代码实现

close all; clear all; clc

input_folder = 'E:\水下目标识别\chinamm2019uw_train\jpegimage\'; % 输入文件夹路径
output_folder = 'E:\水下目标识别\chinamm2019uw_train\processed\'; % 输出文件夹路径

file_list = dir([input_folder '*.jpg']); % 获取所有jpg文件

for i = 1:length(file_list)
    % 读取图像
    I = imread(fullfile(input_folder, file_list(i).name));
    I_r = double(I(:,:,1));
    I_g = double(I(:,:,2));
    I_b = double(I(:,:,3));

    I_r_log = log(I_r+1);
    I_g_log = log(I_g+1);
    I_b_log = log(I_b+1);

    Rfft1 = fft2(I_r);
    Gfft1 = fft2(I_g);
    Bfft1 = fft2(I_b);

    %  SSR算法
    [m,n] = size(I_r);
    sigma = 200;
    f = fspecial('gaussian', [m, n], sigma);
    efft1 = fft2(double(f));

    D_r = ifft2(Rfft1.*efft1);
    D_g = ifft2(Gfft1.*efft1);
    D_b = ifft2(Bfft1.*efft1);

    D_r_log = log(D_r + 1);
    D_g_log = log(D_g + 1);
    D_b_log = log(D_b + 1);

    R = I_r_log - D_r_log;
    G = I_g_log - D_g_log;
    B = I_b_log - D_b_log;

    R = exp(R);
    MIN = min(min(R)); 
    MAX = max(max(R));
    R = (R - MIN)/(MAX - MIN);
    R = adapthisteq(R);
    G = exp(G);
    MIN = min(min(G)); 
    MAX = max(max(G));
    G = (G - MIN)/(MAX - MIN);
    G = adapthisteq(G);
    B = exp(B);
    MIN = min(min(B)); 
    MAX = max(max(B));
    B = (B - MIN)/(MAX - MIN);
    B = adapthisteq(B);

    J = cat(3, R, G, B);

    % 保存图像
    [~, filename, ~] = fileparts(file_list(i).name);
    output_filename = [filename '_processed.jpg'];
    imwrite(J, fullfile(output_folder, output_filename));

    fprintf('Processed and saved %s\n', output_filename);
    end

代码解释

  1. 设置输入和输出文件夹路径: input_folder 和 output_folder 变量分别定义了待处理图像的文件夹和处理后图像保存的文件夹路径。

  2. 读取所有 jpg 文件: file_list = dir([input_folder '*.jpg']); 获取 input_folder 中所有以 .jpg 结尾的文件。

  3. 循环处理每个图像: 使用 for 循环遍历所有文件,对每个文件进行处理。

  4. 读取图像: I = imread(fullfile(input_folder, file_list(i).name)); 读取当前文件对应的图像。

  5. SSR 算法: 代码中的 SSR 算法部分是对图像进行增强处理的核心代码,代码对每个通道分别进行处理,最终合成处理后的图像 J。

  6. 保存图像: 将处理后的图像 J 保存到 output_folder 文件夹,文件名以原始文件名加 _processed 后缀命名。

注意事项

  • 确保代码中 input_folder 和 output_folder 的路径正确。
  • 请确保 output_folder 文件夹已经存在,代码不会自动创建文件夹。
  • 代码中的 sigma 参数控制 Gaussian 滤波器的尺度,可以根据实际需求调整。

总结

本文提供使用 Matlab 代码对水下图像进行批量处理,使用 SSR 算法增强图像对比度,提升水下目标识别效果的代码示例。该代码可用于处理大量水下图像,并保存处理后的图像到指定文件夹,方便后续识别和分析。

参考

Matlab 批量图像处理 - SSR 算法增强水下目标识别

原文地址: https://www.cveoy.top/t/topic/pgSu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录