本文主要是介绍2024年MathorCup数模竞赛B题问题一二三+部分代码分享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
inputFolderPath = 'E:\oracle\images\';
outputFolderPath = 'E:\oracle\process\';
% 获取文件夹中所有图片的文件列表
imageFiles = dir(fullfile(inputFolderPath, '*.jpg'));
% 设置colorbar范围阈值
threshold = 120;
% 遍历每个图片文件
for i = 1:length(imageFiles)
% 读取图片
currentImage = imread(fullfile(inputFolderPath, imageFiles(i).name));
% 创建一个二值化图像,大于阈值的部分为1,其余部分为0
binaryImage = currentImage(:,:,1) > threshold;
% 将大于阈值的部分设为黑色,其余部分设为白色
resultImage = uint8(cat(3, ~binaryImage * 255, ~binaryImage * 255, ~binaryImage * 255));
% 保存新生成的图像到新的文件夹
[~, name, ext] = fileparts(imageFiles(i).name);
resultFileName = fullfile(outputFolderPath, [regexprep(name, '_filtered', '') ext]);
imwrite(resultImage, resultFileName);
end
1.降噪与细化处理:应用中值滤波和阈值法(大津算法Otsu's method)来减少噪声(去除了甲骨文内部一些白色噪点,同时将背景中大部分噪点去除,并将甲骨上边缘模糊的地方进行细化操作处理,注意保证甲骨文的清晰程度)
中值滤波降噪: 对甲骨文图像进行中值滤波操作,以减少图像中的噪声。
细化处理: 可以采用形态学操作中的细化算法对甲骨文边缘进行进一步细化,以保证甲骨文的清晰度。
import os
import cv2def denoise_image(image):# 中值滤波denoised_image = cv2.medianBlur(image, 5) # 中值滤波# 高斯滤波# denoised_image = cv2.GaussianBlur(image, (7, 7), 0) # 高斯滤波return denoised_image# 输入和输出目录
input_folder = 'E:/oracle/process1/'
output_folder = 'E:/oracle/process2/'# 确保输出目录存在
if not os.path.exists(output_folder):os.makedirs(output_folder)# 处理多张图片
for filename in os.listdir(input_folder):# 读取图像image_path = os.path.join(input_folder, filename)image = cv2.imread(image_path)# 降噪denoised_image = denoise_image(image)# 保存结果output_path = os.path.join(output_folder, filename)cv2.imwrite(output_path, denoised_image)
这篇关于2024年MathorCup数模竞赛B题问题一二三+部分代码分享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!