将灰度二维图像转换为矩形网格
Convert Grayscale 2D Image to Rectangular Mesh
我想通过导入障碍物的灰度图像并将其转换为流体单元和边界单元的网格来创建用于流体流动分析的矩形网格。我认为最好的方法是遍历图像的像素并确定像素值是黑色(边界)还是白色(流体)。我需要将其映射到我将在我的代码中指定的 N x M 网格(最好在一个数组中,该数组具有 C_B 单元边界和 C_F 单元流体。
对于在 Matlab 或 Mathematica 中实现这个有什么帮助吗?
示例图片
好吧,您想对图像进行二值化。在 matlab 中这很简单(我相信它在 mathematica 中也很容易,但我不知道该软件)
这是一个非常粗略的大纲,这也使用了 Image Processing toolbox
%this automatically creates a threshold for your data. it assumes your
%intensities are bimodal distribution, and tries to split them and minimize
%the overlap suing something called "otsu's algorithm" the result is a
%normalized value between 0 and 1
my_thresh = graythresh(my_gray_image);
%create your binary image. im assuming your image is uint8 type 0-255
%since our threshold is between 0,1 we must multiply by 255 to get the
%uint8 threshold
binary_im = im2bw(my_gray_im, round(my_thresh*255));
%displays the images
figure()
subplot(1,2,1);imshow(my_gray_im);title('original image')
subplot(1,2,2);imshow(binary_im );title('binary image')
结果是 0 或 1 的单元格,所以它不会完全是 C_B 和 C_F,但它是相同的想法
我想通过导入障碍物的灰度图像并将其转换为流体单元和边界单元的网格来创建用于流体流动分析的矩形网格。我认为最好的方法是遍历图像的像素并确定像素值是黑色(边界)还是白色(流体)。我需要将其映射到我将在我的代码中指定的 N x M 网格(最好在一个数组中,该数组具有 C_B 单元边界和 C_F 单元流体。
对于在 Matlab 或 Mathematica 中实现这个有什么帮助吗?
示例图片
好吧,您想对图像进行二值化。在 matlab 中这很简单(我相信它在 mathematica 中也很容易,但我不知道该软件)
这是一个非常粗略的大纲,这也使用了 Image Processing toolbox
%this automatically creates a threshold for your data. it assumes your
%intensities are bimodal distribution, and tries to split them and minimize
%the overlap suing something called "otsu's algorithm" the result is a
%normalized value between 0 and 1
my_thresh = graythresh(my_gray_image);
%create your binary image. im assuming your image is uint8 type 0-255
%since our threshold is between 0,1 we must multiply by 255 to get the
%uint8 threshold
binary_im = im2bw(my_gray_im, round(my_thresh*255));
%displays the images
figure()
subplot(1,2,1);imshow(my_gray_im);title('original image')
subplot(1,2,2);imshow(binary_im );title('binary image')
结果是 0 或 1 的单元格,所以它不会完全是 C_B 和 C_F,但它是相同的想法