不使用matlab函数库对图像进行二值化并在axes输出原图和处理后的图像matlab源代码
时间: 2024-10-21 19:03:13 浏览: 7
当然可以,如果你想要不使用MATLAB内置函数库(如`imbinarize`)对图像进行二值化并手动创建原图和处理后的图像对比,你可以编写如下的自定义代码:
```matlab
% 读取图像
img = imread('your_image.jpg'); % 替换为你的图片路径
% 将图像转为双精度浮点数,方便后续操作
img = double(img) / 255; % 归一化到0-1范围
% 设置阈值,这里简单地选择Otsu's方法寻找全局最优阈值
% Otsu's方法是一种自适应阈值选取方法,适用于灰度图像
threshold = otsu(img);
% 进行二值化
binary_img = img > threshold;
% 创建新轴显示原图和二值化后的图像
figure;
subplot(1,2,1);
imshow(img, []);
title('Original Image');
subplot(1,2,2);
imshow(binary_img, []);
title('Binarized Image (Threshold: ' + num2str(threshold) + ')');
% 对比显示
colormap gray; % 设置黑白灰度地图
hold on;
plot(gca, [0 1], [0 1], 'r', 'LineWidth', 2); % 绘制一条从左上到右下的线,作为阈值参考
legend('Image', 'Binary Image');
% 保存图像
saveas(gcf, 'binary_image_output.jpg'); % 保存二值化后的图像
% 提供额外的功能,如果需要调整阈值,可以在交互模式下进行
if isinteractive
disp('You can adjust the threshold by entering a new value.');
pause;
end
```
这个代码首先读取图像,然后归一化像素值。之后使用Otsu's方法找到一个阈值,根据这个阈值进行二值化。代码在图形窗口中显示原图和处理后的二值化图像,并允许用户在交互模式下调整阈值。
阅读全文