学数字图像处理的课程时做过类似的实验,想重新利用一下这个程序,为了便捷快速,把大体思路和AI说了一下,让它来完成,经过几次报错修改后成品如下:
原图:

修改后的:

大体思路就是使用鼠标点选想要删除的颜色,程序得到数值后将整个图片中该颜色范围相近的替换为白色,需要告诉AI使用RGB三色通道。
code:
% 读取图像
img = imread('remove.png');
% 确保图像是RGB格式
if size(img, 3) ~= 3
error('此脚本仅适用于RGB彩色图像,请提供RGB图像。');
end
% 显示图像
hFig = figure;
hAx = axes('Parent', hFig);
hImg = imshow(img, 'Parent', hAx);
% 获取用户点击位置的颜色
[picked_color_x, picked_color_y] = ginput(1); % 用户点击获取一个点
picked_color = impixel(img, picked_color_x, picked_color_y); % 根据坐标获取颜色值
picked_color = picked_color(1,:); % impixel返回的是行向量,确保picked_color是一维数组
% 定义容差范围,这里以RGB每个通道50为例
tolerance = 50;
% 创建逻辑索引,找出所有与选定颜色相近的像素
logical_img = all(abs(double(img) - reshape(picked_color, [1, 1, 3])) <= tolerance, 3);
% 将选定颜色附近的像素设置为白色
img_modified = img;
[rows, cols] = find(logical_img); % 找到所有满足条件的位置
for k = 1:length(rows)
img_modified(rows(k), cols(k), :) = [255, 255, 255]; % 设置为白色
end
% 显示修改后的图像
figure;
imshow(img_modified);
% 如果需要保存修改后的图像,请取消下面注释行
% imwrite(img_modified, 'modified_image_file.jpg');
4231

被折叠的 条评论
为什么被折叠?



