How to soften the boundaries within a matrix
2 次查看(过去 30 天)
显示 更早的评论
Hi
I have a matrix M, size N1xN1, which only has positive integers, and is delimited by zones, as seen in the following picture created using image(M) (I changed the colormap and the axes, but that is not relevant for this question)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/901965/image.png)
What I would like to know if there is a way to soften the boundaries between each area, i.e., that the curves do not seem discretized, but interpolated.
Thanks in advnace for any help
0 个评论
回答(1 个)
Image Analyst
2022-2-21
You can blur the matrix and rediscretize it.
windowWidth = 9;
kernel = ones(windowWidth) / windowWidth^2;
blurredImage = conv2(M, kernel, 'same');
% Now call discretize to quantize into the levels you had.
7 个评论
Image Analyst
2022-2-21
Again, attach M in a .mat file with the paperclip icon.
save('answers.mat', 'M');
Make it easy for me to help you. I'll check back in a couple hours.
In the meantime I'm attaching a demo where you can get the boundaries with bwboundary() and then smooth the boundary with a Savitzky-Golay filter.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Orange 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!