clear,clc;
I=dicomread('n.dcm');
I=double(I);
se = strel('octagon',300);%规定膨胀的形态学结构元素 r 是从原点到盘边的距离。
Io = imopen(I,se);%开运算
Tbest=1000;%将开运算的到图二值化作为模板
[m,n]=size(Io);
ind1=find(Io>=Tbest);
ind2=find(Io<Tbest);
Io1=zeros(size(Io));
Io1(ind1)=1;
Io1(ind2)=0;
figure,imshow(Io,[])
title('开运算')
Ie = imerode(I,se);%腐蚀图像
Iobr = imreconstruct(Ie,I);%形态重建
Iobrd = imdilate(Iobr,se);%膨胀图像
Iobrcbr = imreconstruct(imcomplement(Iobrd),imcomplement(Iobr));%形态重建
Iobrcbr = imcomplement(Iobrcbr);%计算图像Iobrcbr的补码并在 Iobrcbr 中返回结果
fgm = imregionalmax(Iobrcbr);%前景标记
se2 = strel('disk',100);
fgm2 = imclose(fgm,se2);
fgm3 = imerode(fgm2,se2);
x2=(double(Io1)).*I;
fgm_=1-double(fgm3);
x3=(fgm_).*x2;
figure,imshow(x3,[]);
[m,n]=size(x3);
x3=255*(x3-min(x3(:)))/(max(x3(:))-min(x3(:)));%映射
K=x3;
[M,N] = size(K);
K2 = zeros(M, N, 3); %初始化三通道
for x = 1 : M
for y = 1 : N
if K(x, y) <= 128 % R
K2(x, y, 1) = 0;
elseif K(x, y) <= 192
K2(x, y, 1) = 4 * K(x, y) - 510;
else
K2(x, y, 1) = 255;
end
if K(x, y) <= 64 % G
K2(x, y, 2) = 4 * K(x, y);
elseif K(x, y) <= 192
K2(x, y, 2) = 255;
else
K2(x, y, 2) = 1022 - 4 * K(x, y);
end
if K(x, y) <= 64 % B
K2(x, y, 3) = 255;
elseif K(x, y) <= 128
K2(x, y, 3) = 510 - 4 * K(x, y);
else
K2(x, y, 3) = 0;
end
end
end
imshow(uint8(K2));
已经做完切割和伪彩色,不知道怎么框选正方形感兴趣区
试过边缘检测试过直接找感兴趣区,但是都不行
你好,可以把完整代码粘贴一下吗,不然重新打代码浪费时间,本末倒置