對于1-4問針對的是附錄1 中的數據
clc;
close all;
clear;
% 圖像文件夾路徑
folder_path = 'E:/新建文件夾/yatai/Attachment/Attachment 1/';
% 圖像文件列表
image_files = dir(fullfile(folder_path, '*.jpg')); % 假設所有圖片都是jpg格式% 解析文件名中的數字,并轉換為數值類型
numbers = cellfun(@(x) sscanf(x, '%d.jpg'), {image_files.name});% 根據解析出的數字對文件列表進行排序
[~, sorted_idx] = sort(numbers);
image_files = image_files(sorted_idx);
% 存儲每張圖片蘋果數量的數組
apple_counts = zeros(length(image_files), 1);
1,需要對原始的數據預操作,進行數據增強增強
% 應用Retinex算法sigma = 150; % 高斯濾波器的標準差,可以調整enhanced_img = singleScaleRetinex(img, sigma);
2.轉換色彩空間 進行直方圖均值化
% 轉換到YCbCr色彩空間進行直方圖均衡化
img_ycbcr = rgb2ycbcr(enhanced_img);
Y_channel = img_ycbcr(:,:,1); % Y通道
img_ycbcr(:,:,1) = histeq(Y_channel); % 對Y通道進行直方圖均衡化
3.LAb色彩空間
% 將處理后的圖像轉換回RGB色彩空間img_eq = ycbcr2rgb(img_ycbcr);% 轉換到LAB色彩空間img_lab = rgb2lab(img);% 分別獲取L*, a*, b*通道L_channel = img_lab(:,:,1); % L* 亮度通道a_channel = img_lab(:,:,2); % a* 通道,從綠色到紅色b_channel = img_lab(:,:,3); % b* 通道,從藍色到黃色
4.k-means聚類
% 使用k-means算法在a_channel進行顏色聚類numOfClusters = 2; % 你想要的聚類數量[cluster_idx, cluster_center] = kmeans(a_channel_reshape, numOfClusters, 'Distance', 'sqEuclidean', 'Replicates', 3);% 將聚類索引重塑回圖像的大小clustered_img = reshape(cluster_idx, rows, cols);clustered_img_color = label2rgb(clustered_img);
更多參考資料見下方:?
????????建模忠哥
基于1-4問生成的附錄2 中的訓練集標簽用于后續yolov5對蘋果的分割檢測?
?
?