有没有大佬能对下面的双边滤波优化优化,计算时间太长了
hsv = rgb2hsv(New); % 将RGB色彩空间转换到HSV色彩空间imgh = hsv(:, :, 1);imgs = hsv(:, :, 2);imgv = hsv(:, :, 3); % 分别取HSV通道
[lbk]height, width[rbk] = size(imgv); % 读取图像高宽vhigh = zeros(height, width); % 存储图像的高频分量sigma_s = [lbk]15 70 110[rbk];sigma_r = [lbk]0.05 0.10 0.15[rbk]; % 双边滤波的标准差参数
% 对每个标准差参数进行操作for g = 1:3 vlow = imbilatfilt(imgv, sigma_r(g), sigma_s(g)); % 使用内置的双边滤波函数 C = 0.77; Gamma = [lbk]0.05, 0.1, 0.3[rbk]; % 伽马校正参数 vlow = C * (vlow .^ Gamma(g)); % 伽马校正公式 vhigh = 1 / 3 * (log(imgv ./ vlow + 1) + vhigh); % 获得v通道的高频分量end
result1 = cat(3, imgh, imgs, vhigh); % 将处理后的通道重新进行拼接result1 = hsv2rgb(result1); % 将HSV色彩空间重新转换回RGB色彩空间figure(2);subplot(121);imshow(Imageori);title('原图');subplot(122);imshow(result1);title('基于双边滤波的MSR');
hsv = rgb2hsv(New); % 将RGB色彩空间转换到HSV色彩空间imgh = hsv(:, :, 1);imgs = hsv(:, :, 2);imgv = hsv(:, :, 3); % 分别取HSV通道
[lbk]height, width[rbk] = size(imgv); % 读取图像高宽vhigh = zeros(height, width); % 存储图像的高频分量sigma_s = [lbk]15 70 110[rbk];sigma_r = [lbk]0.05 0.10 0.15[rbk]; % 双边滤波的标准差参数
% 对每个标准差参数进行操作for g = 1:3 vlow = imbilatfilt(imgv, sigma_r(g), sigma_s(g)); % 使用内置的双边滤波函数 C = 0.77; Gamma = [lbk]0.05, 0.1, 0.3[rbk]; % 伽马校正参数 vlow = C * (vlow .^ Gamma(g)); % 伽马校正公式 vhigh = 1 / 3 * (log(imgv ./ vlow + 1) + vhigh); % 获得v通道的高频分量end
result1 = cat(3, imgh, imgs, vhigh); % 将处理后的通道重新进行拼接result1 = hsv2rgb(result1); % 将HSV色彩空间重新转换回RGB色彩空间figure(2);subplot(121);imshow(Imageori);title('原图');subplot(122);imshow(result1);title('基于双边滤波的MSR');