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 cv2
def 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)