分割Image

以分割一张JPG的图片为例,此方法可以将图片均等分割成想要的数量,也可以从任意位置进行对图片的分割,抛砖引玉,大家且看代码吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
UIImage *image = [UIImage imageNamed:@"apple.jpg"];
 
float fxw = image.size.width*1.0/2;   // “2”X方向分割的数量
 
float xyh = image.size.height*1.0/2; //“2”Y方向分割的数量
 
for(int i = 0 ; i < 2 ; i++){
 
        for(int j = 0 ; j < 2 ; j++){
 
CGRect rect = CGRectMake(i*fxw, j*xyh, fxw, xyh);  //定义出重回的举行区域
 
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], rect);
 
UIImage *imageIn = [UIImage imageWithCGImage:imageRef];
 
NSString *str = [NSString stringWithFormat:@"apple_%d_%d.jpg",i,j];
 
NSString *stri = [NSHomeDirectory() stringByAppendingPathComponent:str];
 
NSLog(@"%@",stri);
 
NSData *data = UIImageJPEGRepresentation(imageIn, 0.5);
 
[data writeToFile:stri atomically:NO];   //写入到路径
 
}
 
}

CGImageRef 与 CGImage 用于重绘操作

在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentatio

n和UIImagePNGRepresentation. UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数.而UIImagePNGRepresentation只需要图片引用作为参数.通过在实际使用过程中,比较发现: UIImagePNGRepresentation(UIImage* image) 要比UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的图片数据量大很多.譬如,同样是读取摄像头拍摄的同样景色的照片, UIImagePNGRepresentation()返回的数据量大小为199K ,而 UIImageJPEGRepresentation(UIImage* image, 1.0)返回的数据量大小只为140KB,比前者少了50多KB.如果对图片的清晰度要求不高,还可以通过设置 UIImageJPEGRepresentation函数的第二个参数,大幅度降低图片数据量.譬如,刚才拍摄的图片, 通过调用UIImageJPEGRepresentation(UIImage* image, 1.0)读取数据时,返回的数据大小为140KB,但更改压缩系数后,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回的数据大小只有11KB多,大大压缩了图片的数据量 ,而且从视角角度看,图片的质量并没有明显的降低.因此,在读取图片数据内容时,建议优先使用UIImageJPEGRepresentation,并可根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小.


### ImageJ图像分割的方法 ImageJ 是一款广泛应用于生物医学领域中的开源软件工具,用于处理和分析科学图像。以下是关于如何利用 ImageJ 进行图像分割的一些技术方法: #### 1. 阈值法 (Thresholding) 阈值法是一种简单而有效的图像分割方式,适用于灰度或彩色图像。通过设定像素强度的上下限来区分目标区域与背景。 - 打开一幅图像并转换为8位灰度图。 - 使用菜单命令 `Image > Adjust > Threshold` 来设置合适的阈值范围[^1]。 ```python from ij import IJ, ImagePlus imp = IJ.openImage("path_to_image.tif") # 加载图像路径 IJ.run(imp, "8-bit", "") # 转换为8位灰度图 IJ.setThreshold(imp, 50, 200) # 设置阈值范围 ``` #### 2. 形态学操作 (Morphological Operations) 形态学操作可以进一步优化分割效果,去除噪声或者填补孔洞。 - 应用侵蚀(Erode) 和膨胀(Dilate) 操作以清理边界不规则的目标对象。 - 利用 `Process > Binary > Fill Holes` 命令填充内部空隙[^2]。 #### 3. 分水岭算法 (Watershed Algorithm) 分水岭变换特别适合于分离紧密接触的对象。 - 将二值化后的图像转化为距离映射。 - 启动插件 `Process > Binary > Watershed` 实现细胞或其他圆形物体的有效拆分[^3]。 #### 4. 自定义宏脚本 (Custom Macro Script) 对于复杂任务,编写自定义宏可以帮助自动化整个流程。 ```javascript // 定义一个简单的Macro来进行基本分割 macro "Basic Segmentation" { run("8-bit"); setAutoThreshold("Otsu dark"); // Otsu自动阈值计算 run("Convert to Mask"); } ``` 以上介绍了几种常见的基于ImageJ实现图像分割的技术手段及其具体实施步骤。每种方法都有其适用场景,在实际应用过程中可能需要组合多种策略才能达到最佳的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值